diff options
author | Erik Johnston <erik@matrix.org> | 2016-08-16 11:34:36 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-08-16 11:34:36 +0100 |
commit | 2ee1bd124c2d9ac7f11d0b32c9e40a842db14fe9 (patch) | |
tree | 24cf296cdf3a2a86fd4f099d93499e2350901bdc /synapse/handlers/federation.py | |
parent | Merge branch 'fix_integrity_retry' of https://github.com/Ralith/synapse into ... (diff) | |
download | synapse-2ee1bd124c2d9ac7f11d0b32c9e40a842db14fe9.tar.xz |
Limit number of extremeties in backfill request
This works around a bug where if we make a backfill request with too many extremeties it causes the request URI to be too long.
Diffstat (limited to 'synapse/handlers/federation.py')
-rw-r--r-- | synapse/handlers/federation.py | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index ff6bb475b5..328f8f4842 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -274,7 +274,7 @@ class FederationHandler(BaseHandler): @log_function @defer.inlineCallbacks - def backfill(self, dest, room_id, limit, extremities=[]): + def backfill(self, dest, room_id, limit, extremities): """ Trigger a backfill request to `dest` for the given `room_id` This will attempt to get more events from the remote. This may return @@ -284,9 +284,6 @@ class FederationHandler(BaseHandler): if dest == self.server_name: raise SynapseError(400, "Can't backfill from self.") - if not extremities: - extremities = yield self.store.get_oldest_events_in_room(room_id) - events = yield self.replication_layer.backfill( dest, room_id, @@ -455,6 +452,10 @@ class FederationHandler(BaseHandler): ) max_depth = sorted_extremeties_tuple[0][1] + # We don't want to specify too many extremities as it causes the backfill + # request URI to be too long. + extremities = dict(sorted_extremeties_tuple[:5]) + if current_depth > max_depth: logger.debug( "Not backfilling as we don't need to. %d < %d", |