On Jan 7, 2008, at 9:35 AM, Christian Theune wrote:
Am Montag, den 07.01.2008, 07:29 -0500 schrieb Jim Fulton:
On Jan 7, 2008, at 5:58 AM, Christian Theune wrote:
I was wondering whether it might be reasonabl to let a ConflictError
always doom a transaction.
It already does afaik,
Hmm. It doesn't seem to, but at least committing a second time raises
the same conflict error again.
I was referring to read conflicts. Dooming write conflicts isn't
necessary because the data remains in conflict, as you noticed.
If you look at things like `tal:on-error` then those errors can be
accidentally swallowed and still have the transaction commit. If the
transaction was doomed then those requests would provide a real
because the transaction couldn't be committed although the publisher
(I think this is sort of a more zodbish than zopeish question, so
posting it here.)
I'm 99% sure that conflict errors already doom transactions. Note
that the scenario you describe should not occur in any case due to
mvcc unless the invoked code does a commit.
The idea of making conflicts doom the transaction was to avoid
accidental subsequent commits.
The whole doom mechanism was added to deal with read conflicts.
Turns out this already happens because
the conflict stays.
(The thought was inspired by application-level exceptions that express
referential integrity problems and we're using doom there.)
I'd be interested in what your motivation of making ConflictErrors
the transaction is as my motivation seems to be invalid.
In general, a conflict error should prevent a commit unless it is
dealt with. I think my motivation and yours are the same. The doom
mechanism is meant to deal with read conflicts. It isn't needed for
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org