summary refs log tree commit diff
path: root/synapse/storage/events.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2018-03-05 12:06:19 +0000
committerErik Johnston <erik@matrix.org>2018-03-07 11:55:31 +0000
commit8cb44da4aa569188faa2a94aae6bc093aa8e22ec (patch)
treea391883f6c38cecbdd7dba77e7b0ee5f84185e5e /synapse/storage/events.py
parentMerge pull request #2949 from krombel/use_bcrypt_checkpw (diff)
downloadsynapse-8cb44da4aa569188faa2a94aae6bc093aa8e22ec.tar.xz
Fix race in sync when joining room
The race happens when the user joins a room at the same time as doing a
sync. We fetch the current token and then get the rooms the user is in.
If the join happens after the current token, but before we get the rooms
we end up sending down a partial room entry in the sync.

This is fixed by looking at the stream ordering of the membership
returned by get_rooms_for_user, and handling the case when that stream
ordering is after the current token.
Diffstat (limited to 'synapse/storage/events.py')
-rw-r--r--synapse/storage/events.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/synapse/storage/events.py b/synapse/storage/events.py
index 057b1be4d5..826fad307e 100644
--- a/synapse/storage/events.py
+++ b/synapse/storage/events.py
@@ -754,7 +754,7 @@ class EventsStore(EventsWorkerStore):
 
                 for member in members_changed:
                     self._invalidate_cache_and_stream(
-                        txn, self.get_rooms_for_user, (member,)
+                        txn, self.get_rooms_for_user_with_stream_ordering, (member,)
                     )
 
                 for host in set(get_domain_from_id(u) for u in members_changed):