On Apr 24, 2007, at 5:01 PM, Jim Fulton wrote:

I'm 99.9% sure that version commit and abort are broken in ZODB.DB. The commit methods in CommitVersion, and AbortVersion (and TransactionalUndo) call invalidate on the databse too soon -- before the transaction has committed. This can have a number of bad effects, including causing inconsistent data in connections.

An argument for keeping version in the past was that they "worked". Well, I think they don't work and I'm not interested in writing the test to fix them. Is anyone else?

I will write the necessary tests to fix the undo bug.

Oh and I'm pretty sure that transactional undo doesn't handle undo of transactions that touch versions correctly. This runs pretty deep because the storage API implementations don't return enough information to handle versions. The undo method returns a transaction id and a sequence of object ids, but it should return a sequence of object-id/version pairs.


Jim Fulton                      mailto:[EMAIL PROTECTED]                Python 
CTO                             (540) 361-1714                  
Zope Corporation        http://www.zope.com             http://www.zope.org

For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to