Commit b709cc89 authored by Julien Muchembled's avatar Julien Muchembled

client: really fix ZODB monkey-patch when DB lock is not acquired

Commit 5c5c7d9a was a wrong fix because RLock
does not raise 'thread.error' like Lock (when releasing an unacquired lock).

Python >= 2.5 raises a RuntimeError and older Python raise an AssertionError.
parent 4df975e8
......@@ -57,10 +57,10 @@ if 1:
###
try:
if Connection._nexedi_fix != 4:
if Connection._nexedi_fix != 5:
raise Exception("A different ZODB fix is already applied")
except AttributeError:
Connection._nexedi_fix = 4
Connection._nexedi_fix = 5
# Whenever an connection is opened (and there's usually an existing one
# in DB pool that can be reused) whereas the transaction is already
......@@ -69,14 +69,12 @@ if 1:
# For example, there's no open transaction when a ZPublisher/Publish
# transaction begins.
import thread
def open(self, *args, **kw):
def _flush_invalidations():
acquire = self._db._a
try:
self._db._r()
except thread.error:
self._db._r() # this is a RLock
except (AssertionError, RuntimeError): # old Python uses assert
acquire = lambda: None
try:
del self._flush_invalidations
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment