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

Dieter Maurer dieter@handshake.de
Thu, 29 May 2003 20:53:24 +0200


Jeffrey P Shell wrote at 2003-5-28 19:33 -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.

When the conflicts are "ReadConfictError"s, then my
"Snapshot Isolation" patch may help you.

When the conflicts are (write) "ConflictError"s, then
application specific conflict resolution might reduce
the probability of Conflicts.

You must not expect to get rid of all (write) "ConflictError"s.

 > 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**.

If this *MUST* not happen, you cannot use your current system...

You can probably make your non-transactional system transactional
very easily. Jens (Vagenpohl, maybe slightly misspelled) has
a transactional mailhost drop in. Analysing it, will give
you some hints how to proceed with your system.


Dieter