ClientStorage: deadlock on disconnect
Bug #142540 reported by
Dieter Maurer
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Zope 2 |
Invalid
|
Medium
|
Unassigned |
Bug Description
ClientStorage (as distributed with Zope 2.6.1)
does not release its "_commit_lock" when
the connection to ZEO is lost during a commit.
The problem is caused by "ClientStorage.
It sets "self._transaction" to "None" and then
checks whether is is not "None" (in which case
it would release the lock).
The following abort sees that "self._transaction"
is not "transaction" and does not release the lock
either.
The fix: Release the lock before transaction
is set to "None".
To post a comment you must log in.
The code of notifyDisconnected is quite different today, the code seems to have moved to tpc_begin which seems to release the lock in all cases.