diff options
| author | Joshua Harlow <harlowja@gmail.com> | 2015-06-17 09:19:40 -0700 |
|---|---|---|
| committer | Joshua Harlow <harlowja@gmail.com> | 2015-06-17 09:21:07 -0700 |
| commit | c43590a44f9eae0b9333d665de599008f9e65275 (patch) | |
| tree | ee456d4c7aae7afc0b5c7e2d4b9ed0b95bd2aac8 /tooz/drivers/file.py | |
| parent | 5b13275d422f4cc8f4fc1b34a7a17cd2b3111820 (diff) | |
| download | tooz-c43590a44f9eae0b9333d665de599008f9e65275.tar.gz | |
Remove file-driver special no-async abilities
To enable a following commit to unify the `run_watchers` of
the various drivers we need to make the file driver method
look more like the other drivers, which means removing the
special no-async ability and having it use the standard get
a future and wait on it to return (and repeat).
Change-Id: I14d227a0e6a80da80eb2580b1780ae1dba128b21
Diffstat (limited to 'tooz/drivers/file.py')
| -rw-r--r-- | tooz/drivers/file.py | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/tooz/drivers/file.py b/tooz/drivers/file.py index 6d4bdda..f8f2502 100644 --- a/tooz/drivers/file.py +++ b/tooz/drivers/file.py @@ -245,10 +245,6 @@ class FileDriver(coordination.CoordinationDriver): return FileFutureResult(fut) def get_members(self, group_id): - fut = self._get_members(group_id) - return FileFutureResult(fut) - - def _get_members(self, group_id, async=True): safe_group_id = self._make_filesystem_safe(group_id) group_dir = os.path.join(self._group_dir, safe_group_id) @@ -288,10 +284,8 @@ class FileDriver(coordination.CoordinationDriver): members.append(member_id) return members - if async: - return self._submit(_do_get_members) - else: - return _do_get_members() + fut = self._submit(_do_get_members) + return FileFutureResult(fut) def get_member_capabilities(self, group_id, member_id): safe_group_id = self._make_filesystem_safe(group_id) @@ -350,7 +344,7 @@ class FileDriver(coordination.CoordinationDriver): fut = self._submit(_do_delete_group) return FileFutureResult(fut) - def _get_groups(self, async=True): + def get_groups(self): def _read_group_id(path): with open(path, 'rb') as fh: @@ -374,18 +368,13 @@ class FileDriver(coordination.CoordinationDriver): raise return groups - if async: - return self._submit(_do_get_groups) - else: - return _do_get_groups() - - def get_groups(self): - fut = self._get_groups() + fut = self._submit(_do_get_groups) return FileFutureResult(fut) def _init_watch_group(self, group_id): - members = self._get_members(group_id, async=False) - self._group_members[group_id].update(members) + group_members_fut = self.get_members(group_id) + group_members = group_members_fut.get(timeout=None) + self._group_members[group_id].update(group_members) def watch_join_group(self, group_id, callback): self._init_watch_group(group_id) @@ -410,11 +399,16 @@ class FileDriver(coordination.CoordinationDriver): raise tooz.NotImplemented def run_watchers(self, timeout=None): - known_groups = self._get_groups(async=False) + w = timeutils.StopWatch(duration=timeout) + w.start() + leftover_timeout = w.leftover(return_none=True) + known_groups = self.get_groups().get(timeout=leftover_timeout) result = [] for group_id in known_groups: + leftover_timeout = w.leftover(return_none=True) try: - group_members = self._get_members(group_id, async=False) + group_members_fut = self.get_members(group_id) + group_members = group_members_fut.get(timeout=leftover_timeout) except coordination.GroupNotCreated: group_members = set() else: |
