summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhaled Basbous <khaled@sixsq.com>2018-09-25 22:18:00 +0200
committerJeff Widman <jeff@jeffwidman.com>2018-09-25 13:18:00 -0700
commit7a8167dea381b3a2015c869a443c96b9d5179411 (patch)
tree4313bcf8540b83f4b2b015de9e28aca657c233df
parentac09667bf6b7afd69fe494cbc67e2e56327a73bb (diff)
downloadkazoo-7a8167dea381b3a2015c869a443c96b9d5179411.tar.gz
fix(recipe): Delete lock node in queue recipe if entry already consumed
Delete lock node if already entry already consumed Fix #366 Related: #347 / #373
-rw-r--r--kazoo/recipe/queue.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/kazoo/recipe/queue.py b/kazoo/recipe/queue.py
index 1ed0e05..9cf22b6 100644
--- a/kazoo/recipe/queue.py
+++ b/kazoo/recipe/queue.py
@@ -335,10 +335,19 @@ class LockingQueue(BaseQueue):
id=id_),
self.id,
ephemeral=True)
+ except NodeExistsError:
+ # Item is already locked
+ return None
+
+ try:
value, stat = self.client.retry(
self.client.get,
"{path}/{id}".format(path=self._entries_path, id=id_))
- except (NoNodeError, NodeExistsError):
- # Item is already consumed or locked
+ except NoNodeError:
+ # Item is already consumed
+ self.client.delete(
+ "{path}/{id}".format(
+ path=self._lock_path,
+ id=id_))
return None
return (id_, value)