diff options
author | Khaled Basbous <khaled@sixsq.com> | 2018-09-25 22:18:00 +0200 |
---|---|---|
committer | Jeff Widman <jeff@jeffwidman.com> | 2018-09-25 13:18:00 -0700 |
commit | 7a8167dea381b3a2015c869a443c96b9d5179411 (patch) | |
tree | 4313bcf8540b83f4b2b015de9e28aca657c233df | |
parent | ac09667bf6b7afd69fe494cbc67e2e56327a73bb (diff) | |
download | kazoo-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.py | 13 |
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) |