diff options
author | Erik Johnston <erik@matrix.org> | 2020-09-18 14:25:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-18 14:25:52 +0100 |
commit | 43f2b67e4d2ce95b3b13d88e755afc7e3907e82b (patch) | |
tree | 9df24c6f22c0464131aaec3803cc8d745075a01b /synapse/handlers/pagination.py | |
parent | Add flags to /versions about whether new rooms are encrypted by default. (#8343) (diff) | |
download | synapse-43f2b67e4d2ce95b3b13d88e755afc7e3907e82b.tar.xz |
Intelligently select extremities used in backfill. (#8349)
Instead of just using the most recent extremities let's pick the ones that will give us results that the pagination request cares about, i.e. pick extremities only if they have a smaller depth than the pagination token. This is useful when we fail to backfill an extremity, as we no longer get stuck requesting that same extremity repeatedly.
Diffstat (limited to 'synapse/handlers/pagination.py')
-rw-r--r-- | synapse/handlers/pagination.py | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/synapse/handlers/pagination.py b/synapse/handlers/pagination.py index 34ed0e2921..6067585f9b 100644 --- a/synapse/handlers/pagination.py +++ b/synapse/handlers/pagination.py @@ -362,9 +362,9 @@ class PaginationHandler: # if we're going backwards, we might need to backfill. This # requires that we have a topo token. if room_token.topological: - max_topo = room_token.topological + curr_topo = room_token.topological else: - max_topo = await self.store.get_max_topological_token( + curr_topo = await self.store.get_current_topological_token( room_id, room_token.stream ) @@ -380,11 +380,11 @@ class PaginationHandler: leave_token = await self.store.get_topological_token_for_event( member_event_id ) - if RoomStreamToken.parse(leave_token).topological < max_topo: + if RoomStreamToken.parse(leave_token).topological < curr_topo: source_config.from_key = str(leave_token) await self.hs.get_handlers().federation_handler.maybe_backfill( - room_id, max_topo + room_id, curr_topo, limit=source_config.limit, ) events, next_key = await self.store.paginate_room_events( |