ZODB 3.10.1: Connection.commit() does not check all oids against _storage.checkCurrentSerialInTransaction()
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ZODB |
Invalid
|
Undecided
|
Unassigned |
Bug Description
In Connection.py, around line 570 we have:
for oid, serial in self._readCurre
try:
except ConflictError:
so, if a call into checkCurrentSer
My quick solutuion looks like this:
for oid, serial in self._readCurre
try:
except ConflictError, e:
if lastException:
raise lastException
This fixes a couple of unrecoverable ReadConflictErrors in my databasses. Even the retry of transactions with conflicts failed before, because not all objects were properly invalidated when needed.
description: | updated |
I posted too early - this did NOT fix my problem. I'm currently seeing unresolved read conflict errors in my zope2 event.log that start ~1-4 hours after zope startup, very sporadic and are gone at zope2 restarts. I'm currently trying to track this down, will post further info, when i have it. debuggin/testing this is extremely difficulty, as i don't yet have a way to provoke those read conflict errors.