diff options
author | Erik Johnston <erikj@jki.re> | 2017-01-31 13:23:24 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-31 13:23:24 +0000 |
commit | bfb3d255b1c8da0a74518168c462bd8ff7ddca2c (patch) | |
tree | 307215cef37e1f5b617bd795df33b375fccc8439 | |
parent | Merge pull request #1861 from matrix-org/erikj/device_list_fixes (diff) | |
parent | Stream cache invalidations for room membership storage functions (diff) | |
download | synapse-bfb3d255b1c8da0a74518168c462bd8ff7ddca2c.tar.xz |
Merge pull request #1862 from matrix-org/erikj/presence_update
Use DB cache of joined users for presence
-rw-r--r-- | synapse/handlers/presence.py | 6 | ||||
-rw-r--r-- | synapse/storage/events.py | 8 |
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 |