summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorErik Johnston <erikj@jki.re>2017-01-31 13:23:24 +0000
committerGitHub <noreply@github.com>2017-01-31 13:23:24 +0000
commitbfb3d255b1c8da0a74518168c462bd8ff7ddca2c (patch)
tree307215cef37e1f5b617bd795df33b375fccc8439 /synapse
parentMerge pull request #1861 from matrix-org/erikj/device_list_fixes (diff)
parentStream cache invalidations for room membership storage functions (diff)
downloadsynapse-bfb3d255b1c8da0a74518168c462bd8ff7ddca2c.tar.xz
Merge pull request #1862 from matrix-org/erikj/presence_update
Use DB cache of joined users for presence
Diffstat (limited to 'synapse')
-rw-r--r--synapse/handlers/presence.py6
-rw-r--r--synapse/storage/events.py8
2 files changed, 9 insertions, 5 deletions
diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py
index 1b89dc6274..9982ae0fed 100644
--- a/synapse/handlers/presence.py
+++ b/synapse/handlers/presence.py
@@ -574,7 +574,7 @@ class PresenceHandler(object):
                 if not local_states:
                     continue
 
-                users = yield self.state.get_current_user_in_room(room_id)
+                users = yield self.store.get_users_in_room(room_id)
                 hosts = set(get_domain_from_id(u) for u in users)
 
                 for host in hosts:
@@ -766,7 +766,7 @@ class PresenceHandler(object):
         # don't need to send to local clients here, as that is done as part
         # of the event stream/sync.
         # TODO: Only send to servers not already in the room.
-        user_ids = yield self.state.get_current_user_in_room(room_id)
+        user_ids = yield self.store.get_users_in_room(room_id)
         if self.is_mine(user):
             state = yield self.current_state_for_user(user.to_string())
 
@@ -1069,7 +1069,7 @@ class PresenceEventSource(object):
 
                 user_ids_to_check = set()
                 for room_id in room_ids:
-                    users = yield self.state.get_current_user_in_room(room_id)
+                    users = yield self.store.get_users_in_room(room_id)
                     user_ids_to_check.update(users)
 
                 user_ids_to_check.update(friends)
diff --git a/synapse/storage/events.py b/synapse/storage/events.py
index 8712d7e18c..6685b9da1c 100644
--- a/synapse/storage/events.py
+++ b/synapse/storage/events.py
@@ -564,9 +564,13 @@ class EventsStore(SQLBaseStore):
                 )
 
                 for member in members_changed:
-                    txn.call_after(self.get_rooms_for_user.invalidate, (member,))
+                    self._invalidate_cache_and_stream(
+                        txn, self.get_rooms_for_user, (member,)
+                    )
 
-                txn.call_after(self.get_users_in_room.invalidate, (room_id,))
+                self._invalidate_cache_and_stream(
+                    txn, self.get_users_in_room, (room_id,)
+                )
 
                 # Add an entry to the current_state_resets table to record the point
                 # where we clobbered the current state