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

Joachim Schmitz js at aixtraware.de
Mon May 28 14:03:47 EDT 2007


Joachim Schmitz schrieb:
> Hi Dieter,
> 
> thanks for this hint.
> 
> Dieter Maurer schrieb:
>> Perry wrote at 2007-5-25 13:16 +0200:
>>> database conflict error (oid 0x7905e6, class BTrees._IOBTree.IOBucket,
>>> serial this txn started with 0x036ddc2a44454dee 2007-05-25
>>> 09:14:16.000950, serial currently committed 0x036ddc2c21950377
>>> 2007-05-25 09:16:07.870801) (80 conflicts (10 unresolved) since startup
>>> at Fri May 25 05:19:08 2007)
>>
>> In our private Zope version, I have still a note like this:
>>
>>         # DM 2005-08-22: always call '_flush_invalidations' as it does
>>         #  more than cache handling only
>>         self._flush_invalidations()
>>         if self._reset_counter != global_reset_counter:
>>             # New code is in place.  Start a new cache.
>>             self._resetCache()
>>         # DM 2005-08-22: always call '_flush_invalidations'
>> ##        else:
>> ##            self._flush_invalidations()
>>
>> The note indicates that the bug was fixed at least at 2005-08-22
>> (though the handling was not completely right in case the cache
>> was reset).
> In ZODB.Connection.Connection.open I see:
> 
>         if self._reset_counter != global_reset_counter:
>             # New code is in place.  Start a new cache.
>             self._resetCache()
>         else:
>             self._flush_invalidations()
> 
> So self._flush_invalidations() is only called in the else-condition.
> In your patch it is always called. I try your version and report back.
> 
I patched the ZODB to always do the self._flush_invalidations(). But 
that didn't change anything, and after looking at the code it couldn't 
cause it was already always called.

here again is the history of a conflict error for one user which finally 
fails:
2007-05-28T18:32:12 INFO ZPublisher.Conflict ConflictError at 
/VirtualHostBase/http/uniben.waeup.org:80/uniben/VirtualHostRoot/campus/students/V659242/study_course/create_level: 
database conflict error (oid 0x7fd771, class BTrees._IOBTree.IOBucket, 
serial this txn started with 0x036deefb352fd600 2007-05-28 
17:31:12.465670, serial currently committed 0x036deefb9aa4d733 
2007-05-28 17:31:36.244666) (34 conflicts (4 unresolved) since startup 
at Mon May 28 17:41:55 2007)
2007-05-28T18:32:44 INFO ZPublisher.Conflict ConflictError at 
/VirtualHostBase/http/uniben.waeup.org:80/uniben/VirtualHostRoot/campus/students/V659242/study_course/create_level: 
database conflict error (oid 0x7fd771, class BTrees._IOBTree.IOBucket, 
serial this txn started with 0x036deefb9aa4d733 2007-05-28 
17:31:36.244666, serial currently committed 0x036deefc2e4ff122 
2007-05-28 17:32:10.854439) (35 conflicts (4 unresolved) since startup 
at Mon May 28 17:41:55 2007)
2007-05-28T18:33:15 INFO Skins.create_level V659242 finished to create 
level 1002007-05-28T18:34:29 INFO ZPublisher.Conflict ConflictError at 
/VirtualHostBase/http/uniben.waeup.org:80/uniben/VirtualHostRoot/campus/students/V659242/study_course/create_level: 
database conflict error (oid 0x7fd771, class BTrees._IOBTree.IOBucket, 
serial this txn started with 0x036deefc2e4ff122 2007-05-28 
17:32:10.854439, serial currently committed 0x036deefe18489244 
2007-05-28 17:34:05.691441) (36 conflicts (4 unresolved) since startup 
at Mon May 28 17:41:55 2007)
2007-05-28T18:35:21 INFO Skins.create_level V659242 finished to create 
level 1002007-05-28T18:38:36 INFO ZPublisher.Conflict ConflictError at 
/VirtualHostBase/http/uniben.waeup.org:80/uniben/VirtualHostRoot/campus/students/V659242/study_course/create_level: 
database conflict error (oid 0x7fd771, class BTrees._IOBTree.IOBucket, 
serial this txn started with 0x036deefe18489244 2007-05-28 
17:34:05.691441, serial currently committed 0x036def009207e011 
2007-05-28 17:36:34.225960) (42 conflicts (4 unresolved) since startup 
at Mon May 28 17:41:55 2007)

------
2007-05-28T18:38:36 ERROR Zope.SiteErrorLog 
http://uniben.waeup.org/campus/students/V659242/study_course/create_level
Traceback (innermost last):
   Module Zope2.App.startup, line 173, in zpublisher_exception_hook
   Module ZPublisher.Publish, line 121, in publish
   Module Zope2.App.startup, line 240, in commit
   Module transaction._manager, line 96, in commit
   Module Products.CPSCompat.PatchZODBTransaction, line 175, in commit
   Module transaction._transaction, line 436, in _commitResources
   Module ZODB.Connection, line 665, in tpc_vote
   Module ZEO.ClientStorage, line 893, in tpc_vote
   Module ZEO.ClientStorage, line 877, in _check_serials
ConflictError: database conflict error (oid 0x7fd771, class 
BTrees._IOBTree.IOBucket, serial this txn started with 
0x036deefe18489244 2007-05-28 17:34:05.691441, serial currently 
committed 0x036def009207e011 2007-05-28 17:36:34.225960)
------

How can I find out, which objects are really involved in the conflict.


-- 
Gruß Joachim



More information about the Zope-Dev mailing list