[Zope-dev] Conflict errors on startup, revisited
Tim Peters
tim.peters at gmail.com
Thu Feb 24 15:29:21 EST 2005
[Paul Winkler]
> ...
> ZODB.POSException.ConflictError: database conflict error (
> serial this txn started with 0x035b25f36751f988 2005-02-10 18:59:24.215675,
> serial currently committed 0x035b743c6d186822 2005-02-24 17:00:25.569220)
No time here for thought, but those timestamps are two weeks apart.
Yikes! Just thought I'd mention that <wink>.
A write conflict (which this is) happens when (and in this time order):
1. A transaction reads an object O.
2. A different transaction modifies O and commits its new state.
3. The original transaction also modifies O, and tries to commit its new state.
#3 fails, because the original transaction has, in general, no way to
know whether the changes it tried to make to O's state are consistent
with the changes the other transaction made to its state in step #2.
For your specific exception above, step #1 started by reading the
state of the object as it existed on 2005-02-10. In step #2, someone
else modified the same object, and committed its state around
2005-02-24 17:00:25. The original transaction then failed in step #3.
Do you use a persistent ZEO client cache? If so, one thing to try is
to physically remove all the cache files -- maybe they've gotten into
an insane state.
It's not impossible that you "should" have a 2-week difference in
timestamps here, but it does look unusual. It's certainly possible
(even expected) if two transactions try to modify the same object, and
the last time that object was changed was in fact two weeks ago.
More information about the Zope-Dev
mailing list