summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark Haines <mjark@negativecurvature.net>2016-06-03 18:28:08 +0100
committerMark Haines <mjark@negativecurvature.net>2016-06-03 18:28:08 +0100
commit040a560a48a60256fdd08adee36e9686efc2e7a5 (patch)
treefadd45b0ea3d03d47284a5ed6afcd860bb388cef
parentMerge pull request #835 from matrix-org/erikj/get_event_txn (diff)
parentFix spelling (diff)
downloadsynapse-040a560a48a60256fdd08adee36e9686efc2e7a5.tar.xz
Merge pull request #837 from matrix-org/markjh/synchrotron_presence_list
Add get_presence_list_accepted to the broken caches in synchrotron
-rw-r--r--synapse/app/synchrotron.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/synapse/app/synchrotron.py b/synapse/app/synchrotron.py
index f4b416f777..aa81e1c5da 100644
--- a/synapse/app/synchrotron.py
+++ b/synapse/app/synchrotron.py
@@ -39,7 +39,7 @@ from synapse.replication.slave.storage.presence import SlavedPresenceStore
 from synapse.server import HomeServer
 from synapse.storage.client_ips import ClientIpStore
 from synapse.storage.engines import create_engine
-from synapse.storage.presence import UserPresenceState
+from synapse.storage.presence import PresenceStore, UserPresenceState
 from synapse.storage.roommember import RoomMemberStore
 from synapse.util.async import sleep
 from synapse.util.httpresourcetree import create_resource_tree
@@ -122,11 +122,8 @@ class SynchrotronSlavedStore(
     SlavedFilteringStore,
     SlavedPresenceStore,
     BaseSlavedStore,
-    ClientIpStore,  # After BaseSlavedStre because the constructor is different
+    ClientIpStore,  # After BaseSlavedStore because the constructor is different
 ):
-    def get_presence_list_accepted(self, user_localpart):
-        return ()
-
     # XXX: This is a bit broken because we don't persist forgotten rooms
     # in a way that they can be streamed. This means that we don't have a
     # way to invalidate the forgotten rooms cache correctly.
@@ -136,6 +133,13 @@ class SynchrotronSlavedStore(
         RoomMemberStore.__dict__["who_forgot_in_room"]
     )
 
+    # XXX: This is a bit broken because we don't persist the accepted list in a
+    # way that can be replicated. This means that we don't have a way to
+    # invalidate the cache correctly.
+    get_presence_list_accepted = PresenceStore.__dict__[
+        "get_presence_list_accepted"
+    ]
+
 UPDATE_SYNCING_USERS_MS = 10 * 1000
 
 
@@ -357,6 +361,7 @@ class SynchrotronServer(HomeServer):
 
         def expire_broken_caches():
             store.who_forgot_in_room.invalidate_all()
+            store.get_presence_list_accepted.invalidate_all()
 
         def notify_from_stream(
             result, stream_name, stream_key, room=None, user=None