summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-07-15 20:17:58 +0000
committerGerrit Code Review <review@openstack.org>2022-07-15 20:17:58 +0000
commit1e86b9103584ce4360633df8e9c536a559a1f79b (patch)
tree828b63e7255e3dea9128c3fb93a58b073571d11b
parente3de0e634af62e46162eb8d2354416ce4f2ba77c (diff)
parent6b2216ebcce5f699b51d7d10b4100eef2dcbd5d0 (diff)
downloadtooz-1e86b9103584ce4360633df8e9c536a559a1f79b.tar.gz
Merge "Fix inappropriate logic in memcachedlock.release()"
-rw-r--r--releasenotes/notes/memcached-fix-lock-release-I6fc33b8e0a88510.yaml4
-rw-r--r--tooz/drivers/memcached.py9
2 files changed, 11 insertions, 2 deletions
diff --git a/releasenotes/notes/memcached-fix-lock-release-I6fc33b8e0a88510.yaml b/releasenotes/notes/memcached-fix-lock-release-I6fc33b8e0a88510.yaml
new file mode 100644
index 0000000..aefd26c
--- /dev/null
+++ b/releasenotes/notes/memcached-fix-lock-release-I6fc33b8e0a88510.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+ - |
+ Fixs inappropriate logic in memcachedlock.release() \ No newline at end of file
diff --git a/tooz/drivers/memcached.py b/tooz/drivers/memcached.py
index 1cefd95..7cc40a9 100644
--- a/tooz/drivers/memcached.py
+++ b/tooz/drivers/memcached.py
@@ -150,11 +150,16 @@ class MemcachedLock(locking.Lock):
# it being done in the client side (non-atomic).
value = self.coord.client.get(self.name)
if value != self.coord._member_id:
+ # NOTE(zhen): Although ``member_ id`` is different, self lock
+ # object needs to be removed from'_ acquired_locks' because it
+ # has the same key.
+ self.coord._acquired_locks.remove(self)
return False
else:
+ # NOTE(zhen): Whether 'was_deleted' was 'TRUE' or not,
+ # eventually we have to remove self from '_acquired_locks'.
was_deleted = self.coord.client.delete(self.name, noreply=False)
- if was_deleted:
- self.coord._acquired_locks.remove(self)
+ self.coord._acquired_locks.remove(self)
return was_deleted
@_translate_failures