[ZODB-Dev] ZEO server hang

Jeremy Hylton jeremy at zope.com
Wed Sep 24 09:52:32 EDT 2003


On Thu, 2003-08-21 at 18:25, Ehle, Brandon wrote:
> I’m running Python 2.2 and ZODB3.2b2.  All previous versions of
> ZODB3.2 and ZODB3.1 exhibited the hang as well, so I’m currently using
> ZODB3.2b2.

I think we've finally fixed this bug.  If you could test the ZODB3 3.2b3
release, I'd appreciate it.

The bug was in the code that restarts blocked transactions.  Each
storage only allows one client to commit a transaction at a time.  If
another client comes along, it is "blocked": It get put on a waiting
list and when the current client finishes, it restarts the next one on
the list.

The bug occurred when a blocked client exited unexpectedly.  The server
executes the tpc_abort() code to free any local resources associated
with the client transaction.  It also restarted the next transaction! 
That's a bug, because the client was blocked and some other client was
executing its transaction.  As a result, the newly restarted transaction
deadlocked as soon as it got into the two-phase commit code.

Jeremy





More information about the ZODB-Dev mailing list