summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-04-10 12:58:13 +0000
committerGerrit Code Review <review@openstack.org>2015-04-10 12:58:13 +0000
commit932bb6cafbc41e23593bac46c18135c55300d28f (patch)
tree3bbaf3d988d1808046bc644bd4ed0f0143eb06b0
parent5362af3389f1cdb8adf9b3512f18800034c6029f (diff)
parent49220c6cfaa40b7db75d4e0a52d66e0fe377e122 (diff)
downloadtooz-932bb6cafbc41e23593bac46c18135c55300d28f.tar.gz
Merge "Avoid re-using the same timeout for further watcher ops" into stable/kilo
-rw-r--r--tooz/drivers/redis.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/tooz/drivers/redis.py b/tooz/drivers/redis.py
index 76b29f4..f52d36a 100644
--- a/tooz/drivers/redis.py
+++ b/tooz/drivers/redis.py
@@ -20,6 +20,11 @@ import contextlib
from distutils import version
import logging
+try:
+ from time import monotonic as _now # noqa
+except ImportError:
+ from time import time as _now # noqa
+
from concurrent import futures
from oslo_utils import strutils
import redis
@@ -664,10 +669,17 @@ class RedisDriver(coordination.CoordinationDriver):
raise tooz.NotImplemented
def run_watchers(self, timeout=None):
+ if timeout is not None:
+ started_at = _now()
result = []
for group_id in self.get_groups().get(timeout=timeout):
+ leftover_timeout = None
+ if timeout is not None:
+ elapsed = max(0.0, _now() - started_at)
+ leftover_timeout = timeout - elapsed
try:
- group_members = self.get_members(group_id).get(timeout=timeout)
+ group_members = self.get_members(group_id).get(
+ timeout=leftover_timeout)
except coordination.GroupNotCreated:
group_members = set()
else: