[ZODB-Dev] Undo differences between Z2 and Z3

David Pratt fairwinds at eastlink.ca
Tue May 16 13:07:58 EDT 2006


There seems to be enough of a difference between Z2 and Z3 undo to have 
an effect on a backend like PGStorage from working on Z3. I believe the 
objective in the storage api is that it should not matter to the backend 
whether you are connected to Z2 or Z3. Can someone more familiar with 
the history of undo in z2 and z3 explain the current situation?

In Z3, before bringing up the contents view, there is a check of the 
undo transactions for the principal. It uses z3's undo manager to 
getPrincipalTransactions which eventually results in a lookup in the 
undoLog in the external storage where it dies. Just a brief look at the 
undo code in z3 gives me the feeling the format between z2 and z3 may be 
incompatible which may be the problem.

The relevant portion of the traceback I receive is this:

   File "/usr/local/zope3/z3trunk/src/zope/tales/expressions.py", line 
199, in _eval
     return ob()
   File 
"/usr/local/zope3/z3trunk/src/zope/app/publisher/browser/viewmeta.py", 
line 419, in __call__
     return meth(*a, **k)
   File "/usr/local/zope3/z3trunk/src/zope/app/undo/browser.py", line 
33, in principalLastTransactionIsUndo
     last=1)
   File "/usr/local/zope3/z3trunk/src/zope/app/undo/__init__.py", line 
108, in getPrincipalTransactions
     return self._getUndoInfo(context, principal, first, last)
   File "/usr/local/zope3/z3trunk/src/zope/app/undo/__init__.py", line 
129, in _getUndoInfo
     entries = self.__db.undoInfo(first, last, specification)
   File "/usr/local/zope3/z3trunk/src/ZODB/UndoLogCompatible.py", line 
37, in undoInfo
     return self.undoLog(first, last, filter)
   File "/usr/local/zope3/z3trunk/src/ZODB/PGStorage/pgstorage.py", line 
478, in undoLog
     d.update(cPickle.loads(ext))
EOFError

Regards,
David


More information about the ZODB-Dev mailing list