diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-04-10 12:58:13 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-04-10 12:58:13 +0000 |
commit | 932bb6cafbc41e23593bac46c18135c55300d28f (patch) | |
tree | 3bbaf3d988d1808046bc644bd4ed0f0143eb06b0 | |
parent | 5362af3389f1cdb8adf9b3512f18800034c6029f (diff) | |
parent | 49220c6cfaa40b7db75d4e0a52d66e0fe377e122 (diff) | |
download | tooz-932bb6cafbc41e23593bac46c18135c55300d28f.tar.gz |
Merge "Avoid re-using the same timeout for further watcher ops" into stable/kilo
-rw-r--r-- | tooz/drivers/redis.py | 14 |
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: |