diff options
author | Erik Johnston <erik@matrix.org> | 2016-08-04 14:01:18 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-08-04 14:01:18 +0100 |
commit | e3ee63578f335037c73675209bb7861045c2027a (patch) | |
tree | 6575a46e5c58a350641982c87e1ef219a1461d53 /synapse | |
parent | Rename fields to _ids (diff) | |
download | synapse-e3ee63578f335037c73675209bb7861045c2027a.tar.xz |
Tidy up get_events
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/federation/federation_client.py | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/synapse/federation/federation_client.py b/synapse/federation/federation_client.py index 264f3c0aec..ae0d650700 100644 --- a/synapse/federation/federation_client.py +++ b/synapse/federation/federation_client.py @@ -411,28 +411,26 @@ class FederationClient(FederationBase): return srvs batch_size = 20 - while missing_events: - batch = [] - try: - for _ in range(0, batch_size): - batch.append(missing_events.pop()) - except KeyError: - pass + missing_events = len(missing_events) + for i in xrange(0, batch_size, batch_size): + batch = set(missing_events[i:i + batch_size]) deferreds = [ self.get_pdu( destinations=random_server_list(), event_id=e_id, - ).addBoth(lambda r, e: (r, e), e_id) + ) for e_id in batch ] res = yield defer.DeferredList(deferreds, consumeErrors=True) - for success, (result, e_id) in res: - if success and result: + for success, result in res: + if success: signed_events.append(result) - else: - failed_to_fetch.add(e_id) + batch.discard(result.event_id) + + # We removed all events we successfully fetched from `batch` + failed_to_fetch.update(batch) defer.returnValue((signed_events, failed_to_fetch)) |