diff options
author | Sean Quah <8349537+squahtx@users.noreply.github.com> | 2022-07-07 13:19:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-07 12:19:31 +0000 |
commit | 1391a76cd2b287daebe61f7d8ea03b258ed522f5 (patch) | |
tree | 9a0265253ca0dd85b3fd12df1b2b3068f360554d /synapse/storage/databases/main/events.py | |
parent | Use a single query in `ProfileHandler.get_profile` (#13209) (diff) | |
download | synapse-1391a76cd2b287daebe61f7d8ea03b258ed522f5.tar.xz |
Faster room joins: fix race in recalculation of current room state (#13151)
Bounce recalculation of current state to the correct event persister and move recalculation of current state into the event persistence queue, to avoid concurrent updates to a room's current state. Also give recalculation of a room's current state a real stream ordering. Signed-off-by: Sean Quah <seanq@matrix.org>
Diffstat (limited to 'synapse/storage/databases/main/events.py')
-rw-r--r-- | synapse/storage/databases/main/events.py | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/synapse/storage/databases/main/events.py b/synapse/storage/databases/main/events.py index 8a0e4e9589..2ff3d21305 100644 --- a/synapse/storage/databases/main/events.py +++ b/synapse/storage/databases/main/events.py @@ -1007,16 +1007,16 @@ class PersistEventsStore: self, room_id: str, state_delta: DeltaState, - stream_id: int, ) -> None: """Update the current state stored in the datatabase for the given room""" - await self.db_pool.runInteraction( - "update_current_state", - self._update_current_state_txn, - state_delta_by_room={room_id: state_delta}, - stream_id=stream_id, - ) + async with self._stream_id_gen.get_next() as stream_ordering: + await self.db_pool.runInteraction( + "update_current_state", + self._update_current_state_txn, + state_delta_by_room={room_id: state_delta}, + stream_id=stream_ordering, + ) def _update_current_state_txn( self, |