[Zope] ZODB reverts to older state after ZEO restart

dvs dvs at zeitbyte.com
Fri May 16 10:36:35 EDT 2008


Recently we restarted our zeo server and immediately noticed 
that we are missing good bit of recently added content. We seemed 
to have reverted back to a specific date in the past. All content 
updates since have disappeared.

Restoring the Data.fs from a recent backup still had the same effect, the 
content all reverted back to one specific date.  In the logs it does show 
that we restored the Data.fs from a backup, restarted, and migrated to 
a newer version of Zope/Plone (Zope 2.9.4 - 2.9.5, Plone 2.5.4 - 2.5.5). 
After the update, the site was fine and was running along smoothly. 

A few days later this came up in the event.log:

2008-01-24T19:05:44 ERROR ZServer uncaptured python exception, closing
channel <ZServer.HTTPServer.zhttp_channel connected 72.249.81.93:56139 at 0x
1598d92c channel#: 45214 requests:> (socket.error:(54, 'Connection reset by
peer') [/usr/local/lib/python2.4/asynchat.py|initiate_send|219] [/usr/l
ocal/zope/295/lib/python/ZServer/medusa/http_server.py|send|417]
[/usr/local/lib/python2.4/asyncore.py|send|332])
------
2008-01-24T19:05:45 ERROR ZEO.zrpc (27931) can't decode message:
'(M\x06\xdcK\x00U\x06.reply(TC\x00\x01\x00(cOFS.Image\nP...'
------
2008-01-24T19:05:45 ERROR ZEO.zrpc.Connection(C) (127.0.0.1:9999) Error
caught in asyncore
Traceback (most recent call last):
  File "/usr/local/lib/python2.4/asyncore.py", line 69, in read
    obj.handle_read_event()
  File "/usr/local/lib/python2.4/asyncore.py", line 391, in
handle_read_event
    self.handle_read()
  File "/usr/local/zope/295/lib/python/ZEO/zrpc/smac.py", line 219, in
handle_read
    self.message_input(msg)
  File "/usr/local/zope/295/lib/python/ZEO/zrpc/connection.py", line 387, in
message_input
    msgid, flags, name, args = self.marshal.decode(message)
  File "/usr/local/zope/295/lib/python/ZEO/zrpc/marshal.py", line 50, in
decode
    return unpickler.load() # msgid, flags, name, args
MemoryError
------
2008-01-24T19:05:45 INFO ZEO.ClientStorage (27931) Disconnected from
storage: "('xxxxx.com', 9999)"
------
2008-01-24T19:05:45 INFO ZEO.ClientStorage (27931) Testing connection
<ManagedClientConnection ('72.249.81.93', 9999)>
------
2008-01-24T19:05:45 INFO ZEO.zrpc.Connection(C) (127.0.0.1:9999) received
handshake 'Z303'

------
2008-01-24T19:05:45 ERROR ZODB.Connection Couldn't load state for 0x01868c
Traceback (most recent call last):
  File "/usr/local/zope/295/lib/python/ZODB/Connection.py", line 732, in
setstate
    self._setstate(obj)
  File "/usr/local/zope/295/lib/python/ZODB/Connection.py", line 786, in
_setstate
    self._reader.setGhostState(obj, p)
  File "/usr/local/zope/295/lib/python/ZODB/serialize.py", line 604, in
setGhostState
    state = self.getState(pickle)
  File "/usr/local/zope/295/lib/python/ZODB/serialize.py", line 597, in
getState
    return unpickler.load()
  File "/usr/local/zope/295/lib/python/ZODB/serialize.py", line 471, in
_persistent_load
    return self.load_oid(reference)
  File "/usr/local/zope/295/lib/python/ZODB/serialize.py", line 537, in
load_oid
    return self._conn.get(oid)
  File "/usr/local/zope/295/lib/python/ZODB/Connection.py", line 201, in get
    p, serial = self._storage.load(oid, self._version)
  File "/usr/local/zope/295/lib/python/ZEO/ClientStorage.py", line 746, in
load
    return self.loadEx(oid, version)[:2]
  File "/usr/local/zope/295/lib/python/ZEO/ClientStorage.py", line 769, in
loadEx
    data, tid, ver = self._server.loadEx(oid, version)
  File "/usr/local/zope/295/lib/python/ZEO/ServerStub.py", line 192, in
loadEx
    return self.rpc.call("loadEx", oid, version)
  File "/usr/local/zope/295/lib/python/ZEO/zrpc/connection.py", line 531, in
call
    r_flags, r_args = self.wait(msgid)
  File "/usr/local/zope/295/lib/python/ZEO/zrpc/connection.py", line 621, in
wait
    raise DisconnectedError()
DisconnectedError
------

The persistent cache file has been saved, but looking at the archive it
seems that 
you can't restore a Data.fs from the persistent cache (please correct me on
this). Looking at 
the logs we can find what content was edited in this time frame and we can
see that it did exist at one time, but the data itself is not in any of the
backup Data.fs files we have.

This is a bit perplexing in that when we restore from any of the backups it
still reverts, what could 
cause this situation and if the data was in fact being saved, where could it
have been saved? We 
were backing up the correct Data.fs (at least, it was the Data.fs that the
zeo server was connected to)

If the zeo server was read only this would make sense but then we wouldn't
be able to make any 
content updates and it would be immediately evident.

Any suggestions or ideas on how we could recover any of this data and the
reasoning behind this happening is much appreciated. 

-- 
View this message in context: http://www.nabble.com/ZODB-reverts-to-older-state-after-ZEO-restart-tp17264827p17264827.html
Sent from the Zope - General mailing list archive at Nabble.com.



More information about the Zope mailing list