summaryrefslogtreecommitdiff
path: root/dogpile/core/dogpile.py
diff options
context:
space:
mode:
Diffstat (limited to 'dogpile/core/dogpile.py')
-rw-r--r--dogpile/core/dogpile.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/dogpile/core/dogpile.py b/dogpile/core/dogpile.py
index 2e3ca0e..4ab52b0 100644
--- a/dogpile/core/dogpile.py
+++ b/dogpile/core/dogpile.py
@@ -127,6 +127,7 @@ class Lock(object):
log.debug("no value, waiting for create lock")
self.mutex.acquire()
+ value = NO_VALUE = object()
try:
log.debug("value creation lock %r acquired" % self.mutex)
@@ -150,7 +151,14 @@ class Lock(object):
return created
finally:
if not async:
- self.mutex.release()
+ try:
+ self.mutex.release()
+ except:
+ if self.only_warn_on_release_failure \
+ and value is not NO_VALUE:
+ raise LockReleaseFailure(value)
+ else:
+ raise
log.debug("Released creation lock")