[Zope-dev] Re: [Bug] ZODB invalidation processing

Joachim Schmitz js at aixtraware.de
Thu May 31 16:56:30 EDT 2007


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



More information about the Zope-Dev mailing list