summary refs log tree commit diff
diff options
context:
space:
mode:
authorNick Mills-Barrett <nick@beeper.com>2022-10-17 13:27:51 +0100
committerGitHub <noreply@github.com>2022-10-17 13:27:51 +0100
commit2c2c3f8b2c1e33d5aee6d480c60c75c1179e3dba (patch)
tree730b642bf49bd2f0232a154a0b3ae7270e3b12e7
parentFix dead link to admin registration API (#14189) (diff)
downloadsynapse-2c2c3f8b2c1e33d5aee6d480c60c75c1179e3dba.tar.xz
Invalidate rooms for user caches when receiving membership events (#14155)
This should fix a race where the event notification comes in over
replication before the state replication, leaving a window during
which a sync may get an incorrect list of rooms for the user.
-rw-r--r--changelog.d/14155.misc1
-rw-r--r--synapse/storage/databases/main/cache.py4
2 files changed, 5 insertions, 0 deletions
diff --git a/changelog.d/14155.misc b/changelog.d/14155.misc
new file mode 100644
index 0000000000..79539cdc32
--- /dev/null
+++ b/changelog.d/14155.misc
@@ -0,0 +1 @@
+Invalidate rooms for user caches on replicated event, fix sync cache race in synapse workers. Contributed by Nick @ Beeper (@fizzadar).
diff --git a/synapse/storage/databases/main/cache.py b/synapse/storage/databases/main/cache.py
index ed0be4abe5..ddb7397714 100644
--- a/synapse/storage/databases/main/cache.py
+++ b/synapse/storage/databases/main/cache.py
@@ -252,6 +252,10 @@ class CacheInvalidationWorkerStore(SQLBaseStore):
             self._attempt_to_invalidate_cache(
                 "get_invited_rooms_for_local_user", (state_key,)
             )
+            self._attempt_to_invalidate_cache(
+                "get_rooms_for_user_with_stream_ordering", (state_key,)
+            )
+            self._attempt_to_invalidate_cache("get_rooms_for_user", (state_key,))
 
         if relates_to:
             self._attempt_to_invalidate_cache("get_relations_for_event", (relates_to,))