Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/9887.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Small performance improvement around handling new local presence updates.
9 changes: 2 additions & 7 deletions synapse/handlers/presence.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@
from synapse.replication.http.streams import ReplicationGetStreamUpdates
from synapse.replication.tcp.commands import ClearUserSyncsCommand
from synapse.replication.tcp.streams import PresenceFederationStream, PresenceStream
from synapse.state import StateHandler
from synapse.storage.databases.main import DataStore
from synapse.types import JsonDict, UserID, get_domain_from_id
from synapse.util.async_helpers import Linearizer
Expand Down Expand Up @@ -291,7 +290,6 @@ async def maybe_send_presence_to_interested_destinations(
self.store,
self.presence_router,
states,
self.state,
)

for destinations, states in hosts_and_states:
Expand Down Expand Up @@ -757,7 +755,6 @@ async def _update_states(self, new_states: Iterable[UserPresenceState]) -> None:
self.store,
self.presence_router,
list(to_federation_ping.values()),
self.state,
)

for destinations, states in hosts_and_states:
Expand Down Expand Up @@ -1384,7 +1381,6 @@ def __init__(self, hs: "HomeServer"):
self.get_presence_router = hs.get_presence_router
self.clock = hs.get_clock()
self.store = hs.get_datastore()
self.state = hs.get_state_handler()

@log_function
async def get_new_events(
Expand Down Expand Up @@ -1853,7 +1849,6 @@ async def get_interested_remotes(
store: DataStore,
presence_router: PresenceRouter,
states: List[UserPresenceState],
state_handler: StateHandler,
) -> List[Tuple[Collection[str], List[UserPresenceState]]]:
"""Given a list of presence states figure out which remote servers
should be sent which.
Expand All @@ -1864,7 +1859,6 @@ async def get_interested_remotes(
store: The homeserver's data store.
presence_router: A module for augmenting the destinations for presence updates.
states: A list of incoming user presence updates.
state_handler:

Returns:
A list of 2-tuples of destinations and states, where for
Expand All @@ -1881,7 +1875,8 @@ async def get_interested_remotes(
)

for room_id, states in room_ids_to_states.items():
hosts = await state_handler.get_current_hosts_in_room(room_id)
user_ids = await store.get_users_in_room(room_id)
hosts = {get_domain_from_id(user_id) for user_id in user_ids}
hosts_and_states.append((hosts, states))

for user_id, states in users_to_states.items():
Expand Down