summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-09-17 09:38:26 +0000
committerGerrit Code Review <review@openstack.org>2014-09-17 09:38:26 +0000
commit90792db9d4f3ffac6dc7a5a72345bbadfe55ee46 (patch)
tree3bcf378c62138937f796eee345137e9198072ea7
parent0cdf7a8d8cdaf26f69f6a05ad039c28603fde80a (diff)
parent3f08c3e9331f9ab42e6f1f6ec73e85f3212de6c7 (diff)
downloadtooz-90792db9d4f3ffac6dc7a5a72345bbadfe55ee46.tar.gz
Merge "Use a thread safe deque instead of a queue"
-rw-r--r--tooz/drivers/zookeeper.py13
1 files changed, 5 insertions, 8 deletions
diff --git a/tooz/drivers/zookeeper.py b/tooz/drivers/zookeeper.py
index a164458..5585743 100644
--- a/tooz/drivers/zookeeper.py
+++ b/tooz/drivers/zookeeper.py
@@ -60,7 +60,7 @@ class BaseZooKeeperDriver(coordination.CoordinationDriver):
raise coordination.ToozError("operation error: %s" % (e))
self._group_members = collections.defaultdict(set)
- self._watchers = six.moves.queue.Queue()
+ self._watchers = collections.deque()
self._leader_locks = {}
def stop(self):
@@ -229,7 +229,7 @@ class KazooDriver(BaseZooKeeperDriver):
# Copy function in case it's removed later from the
# hook list
hooks = copy.copy(self._hooks_join_group[group_id])
- self._watchers.put(
+ self._watchers.append(
lambda: hooks.run(
coordination.MemberJoinedGroup(
group_id,
@@ -239,7 +239,7 @@ class KazooDriver(BaseZooKeeperDriver):
# Copy function in case it's removed later from the
# hook list
hooks = copy.copy(self._hooks_leave_group[group_id])
- self._watchers.put(
+ self._watchers.append(
lambda: hooks.run(
coordination.MemberLeftGroup(
group_id,
@@ -338,11 +338,8 @@ class KazooDriver(BaseZooKeeperDriver):
def run_watchers(self):
ret = []
- while True:
- try:
- cb = self._watchers.get(block=False)
- except six.moves.queue.Empty:
- break
+ while self._watchers:
+ cb = self._watchers.popleft()
ret.extend(cb())
for group_id in six.iterkeys(self._hooks_elected_leader):