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

Commit 0ffa5fb

Browse files
authored
Use current state table for presence.get_interested_remotes (#9887)
This should be a lot quicker than asking the state handler.
1 parent 3ff2251 commit 0ffa5fb

File tree

2 files changed

+3
-7
lines changed

2 files changed

+3
-7
lines changed

changelog.d/9887.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Small performance improvement around handling new local presence updates.

synapse/handlers/presence.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@
5858
from synapse.replication.http.streams import ReplicationGetStreamUpdates
5959
from synapse.replication.tcp.commands import ClearUserSyncsCommand
6060
from synapse.replication.tcp.streams import PresenceFederationStream, PresenceStream
61-
from synapse.state import StateHandler
6261
from synapse.storage.databases.main import DataStore
6362
from synapse.types import JsonDict, UserID, get_domain_from_id
6463
from synapse.util.async_helpers import Linearizer
@@ -291,7 +290,6 @@ async def maybe_send_presence_to_interested_destinations(
291290
self.store,
292291
self.presence_router,
293292
states,
294-
self.state,
295293
)
296294

297295
for destinations, states in hosts_and_states:
@@ -757,7 +755,6 @@ async def _update_states(self, new_states: Iterable[UserPresenceState]) -> None:
757755
self.store,
758756
self.presence_router,
759757
list(to_federation_ping.values()),
760-
self.state,
761758
)
762759

763760
for destinations, states in hosts_and_states:
@@ -1384,7 +1381,6 @@ def __init__(self, hs: "HomeServer"):
13841381
self.get_presence_router = hs.get_presence_router
13851382
self.clock = hs.get_clock()
13861383
self.store = hs.get_datastore()
1387-
self.state = hs.get_state_handler()
13881384

13891385
@log_function
13901386
async def get_new_events(
@@ -1853,7 +1849,6 @@ async def get_interested_remotes(
18531849
store: DataStore,
18541850
presence_router: PresenceRouter,
18551851
states: List[UserPresenceState],
1856-
state_handler: StateHandler,
18571852
) -> List[Tuple[Collection[str], List[UserPresenceState]]]:
18581853
"""Given a list of presence states figure out which remote servers
18591854
should be sent which.
@@ -1864,7 +1859,6 @@ async def get_interested_remotes(
18641859
store: The homeserver's data store.
18651860
presence_router: A module for augmenting the destinations for presence updates.
18661861
states: A list of incoming user presence updates.
1867-
state_handler:
18681862
18691863
Returns:
18701864
A list of 2-tuples of destinations and states, where for
@@ -1881,7 +1875,8 @@ async def get_interested_remotes(
18811875
)
18821876

18831877
for room_id, states in room_ids_to_states.items():
1884-
hosts = await state_handler.get_current_hosts_in_room(room_id)
1878+
user_ids = await store.get_users_in_room(room_id)
1879+
hosts = {get_domain_from_id(user_id) for user_id in user_ids}
18851880
hosts_and_states.append((hosts, states))
18861881

18871882
for user_id, states in users_to_states.items():

0 commit comments

Comments
 (0)