Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Merge pull request #1862 from matrix-org/erikj/presence_update
Browse files Browse the repository at this point in the history
Use DB cache of joined users for presence
  • Loading branch information
erikjohnston authored Jan 31, 2017
2 parents 4c9812f + 4b3403c commit bfb3d25
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
6 changes: 3 additions & 3 deletions synapse/handlers/presence.py
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,7 @@ def _get_interested_parties(self, states, calculate_remote_hosts=True):
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:
Expand Down Expand Up @@ -766,7 +766,7 @@ def user_joined_room(self, user, room_id):
# 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())

Expand Down Expand Up @@ -1069,7 +1069,7 @@ def get_new_events(self, user, from_key, room_ids=None, include_offline=True,

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)
Expand Down
8 changes: 6 additions & 2 deletions synapse/storage/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -564,9 +564,13 @@ def _persist_events_txn(self, txn, events_and_contexts, backfilled,
)

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
Expand Down

0 comments on commit bfb3d25

Please sign in to comment.