[Zope-dev] [CRITICAL] Conflict Errors, Transactions, Retries, Oh My....

Jeffrey P Shell jeffr@euc.cx
Wed, 28 May 2003 19:33:49 -0600


I need to know more about Conflict Errors.  We're running into a lot of 
them lately, it seems, on production Zope 2.6.1 sites (running on 
FreeBSD).  The primary culprit seems to be Temporary Storage/Sessions.


Something that has happened, and is causing a small amount of alarm, is 
that a large method that interfaces to external non-transactional 
systems seems to (on occasion) send their information off to that 
external system twice, but there's only one matching set of Zope data.  
As the two writes to the non-transactional system are very close to 
each other and contain nearly identical data (except for one bit that 
gets regenerated in the method), and there are conflict INFO reports in 
the Event Log from around the same time, I'm assuming that a conflict 
error is happening somewhere in this method and causing the transaction 
to be retried (if I'm understanding how Conflict Errors work).  Zope 
and the relational databases seem to do things fine with rolling back 
the data, but the non-transactional systems now have duplicate data 
that they **absolutely should not have**.


This doesn't happen often, but (as stated), this is a critical 
operation that needs to be better protected.  All other exceptions and 
bits and pieces in the block of code in question has been tested 
thoroughly and we have not had any other problems that cause erroneous 
writes.  Is there a way I can protect against Conflict Error retries as 
well?  Is there some sort of Try/Except or Try/Finally I can wrap 
around the code that won't interfere with the ZODB?  Is there any other 
sort of best-practice here that could help me (and others) who might 
unknowingly trigger this problem?


I know there are some fixes likely to be in Zope 2.6.2 that may help 
with the situation, but I'd like to put extra protections around this 
code regardless of what may be coming in the future.


Thanks in advance,
Jeffrey P Shell
jeffrey@cuemedia.com