diff options
author | Erik Johnston <erikj@jki.re> | 2017-05-16 17:40:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-16 17:40:47 +0100 |
commit | 7c69849a0d2766357c4a39ca6d966e09c76fac9a (patch) | |
tree | 3961fc28fb3033b933b1164df01874469634e05c | |
parent | Merge pull request #2226 from matrix-org/erikj/domain_from_id (diff) | |
parent | Make presence use cached users/hosts in room (diff) | |
download | synapse-7c69849a0d2766357c4a39ca6d966e09c76fac9a.tar.xz |
Merge pull request #2227 from matrix-org/erikj/presence_caches
Make presence use cached users/hosts in room
-rw-r--r-- | synapse/federation/transaction_queue.py | 2 | ||||
-rw-r--r-- | synapse/handlers/presence.py | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/synapse/federation/transaction_queue.py b/synapse/federation/transaction_queue.py index 695f1a7375..a15198e05d 100644 --- a/synapse/federation/transaction_queue.py +++ b/synapse/federation/transaction_queue.py @@ -285,7 +285,7 @@ class TransactionQueue(object): Args: states (list(UserPresenceState)) """ - hosts_and_states = yield get_interested_remotes(self.store, states) + hosts_and_states = yield get_interested_remotes(self.store, states, self.state) for destinations, states in hosts_and_states: for destination in destinations: diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py index f3707afcd0..c7c0b0a1e2 100644 --- a/synapse/handlers/presence.py +++ b/synapse/handlers/presence.py @@ -780,12 +780,12 @@ 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.store.get_users_in_room(room_id) if self.is_mine(user): state = yield self.current_state_for_user(user.to_string()) self._push_to_remotes([state]) else: + user_ids = yield self.store.get_users_in_room(room_id) user_ids = filter(self.is_mine_id, user_ids) states = yield self.current_state_for_users(user_ids) @@ -1322,7 +1322,7 @@ def get_interested_parties(store, states): @defer.inlineCallbacks -def get_interested_remotes(store, states): +def get_interested_remotes(store, states, state_handler): """Given a list of presence states figure out which remote servers should be sent which. @@ -1345,7 +1345,7 @@ def get_interested_remotes(store, states): room_ids_to_states, users_to_states = yield get_interested_parties(store, states) for room_id, states in room_ids_to_states.iteritems(): - hosts = yield store.get_hosts_in_room(room_id) + hosts = yield state_handler.get_current_hosts_in_room(room_id) hosts_and_states.append((hosts, states)) for user_id, states in users_to_states.iteritems(): |