diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2022-03-01 12:49:54 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-01 12:49:54 +0000 |
commit | e2e1d90a5e4030616a3de242cde26c0cfff4a6b5 (patch) | |
tree | 80b848f98f963ed24fc46ca1d6f191ff04f4d9e8 /synapse/handlers/federation.py | |
parent | Advertise Python 3.10 support in setup.py (#12111) (diff) | |
download | synapse-e2e1d90a5e4030616a3de242cde26c0cfff4a6b5.tar.xz |
Faster joins: persist to database (#12012)
When we get a partial_state response from send_join, store information in the database about it: * store a record about the room as a whole having partial state, and stash the list of member servers too. * flag the join event itself as having partial state * also, for any new events whose prev-events are partial-stated, note that they will *also* be partial-stated. We don't yet make any attempt to interpret this data, so API calls (and a bunch of other things) are just going to get incorrect data.
Diffstat (limited to 'synapse/handlers/federation.py')
-rw-r--r-- | synapse/handlers/federation.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index c055c26eca..eb03a5accb 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -519,8 +519,17 @@ class FederationHandler: state_events=state, ) + if ret.partial_state: + await self.store.store_partial_state_room(room_id, ret.servers_in_room) + max_stream_id = await self._federation_event_handler.process_remote_join( - origin, room_id, auth_chain, state, event, room_version_obj + origin, + room_id, + auth_chain, + state, + event, + room_version_obj, + partial_state=ret.partial_state, ) # We wait here until this instance has seen the events come down |