Hi,

I was able to locate the places in the Zope-sources where the conflict error is triggered. On my local system it's in

ZODB.FileStorage in the store-method there is

if serial != cached_tid:
       rdata = self.tryToResolveConflict(oid, cached_tid,serial, data)

in the tryToResolveConflict method of ZODB.ConnflictResolution there is:

committed = state(self, oid, committedSerial, prfactory, committedData)
print "resolve", resolve
resolved = resolve(old, committed, newstate)

I found that the resolve-function raises an ConflictError exception, so I put an print there to find out which resolve function. Here is the output:

resolve <bound method Length._p_resolveConflict of <BTrees.Length.Length object at 0xb28fff6c>> resolve <built-in method _p_resolveConflict of BTrees._OIBTree.OIBucket object at 0xb1b81224> resolve <built-in method _p_resolveConflict of BTrees._OIBTree.OIBucket object at 0xb1b81224> resolve <built-in method _p_resolveConflict of BTrees._OIBTree.OIBucket object at 0xb260c80c> resolve <built-in method _p_resolveConflict of BTrees._OIBTree.OIBucket object at 0xb260c614> resolve <bound method Length._p_resolveConflict of <BTrees.Length.Length object at 0xb2a9146c>> resolve <built-in method _p_resolveConflict of BTrees._IOBTree.IOBucket object at 0xb1b81224>

The last resolve raises an exeption

(Pdb) p sys.exc_info()
(<class ZODB.POSException.BTreesConflictError at 0xb78df0bc>, BTreesConflictError(-1, 47, 47, 6), <traceback object at 0xb1c34dec>)

How can I invest this further, especially how can I get information about the actual object,which is causing the conflict.


--
Gruß Joachim

_______________________________________________
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev

Reply via email to