Skip to content

Commit

Permalink
Add fast path for sliding sync streams that only ask for extensions (#…
Browse files Browse the repository at this point in the history
…17768)

Principally useful for EX e2ee sliding sync connections.
  • Loading branch information
erikjohnston authored Sep 30, 2024
1 parent 93889eb commit de95529
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
1 change: 1 addition & 0 deletions changelog.d/17768.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Improve performance of sliding sync connections that do not ask for any rooms.
21 changes: 21 additions & 0 deletions synapse/handlers/sliding_sync/room_lists.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,19 @@ class SlidingSyncInterestedRooms:
newly_left_rooms: AbstractSet[str]
dm_room_ids: AbstractSet[str]

@staticmethod
def empty() -> "SlidingSyncInterestedRooms":
return SlidingSyncInterestedRooms(
lists={},
relevant_room_map={},
relevant_rooms_to_send_map={},
all_rooms=set(),
room_membership_for_user_map={},
newly_joined_rooms=set(),
newly_left_rooms=set(),
dm_room_ids=set(),
)


def filter_membership_for_sync(
*,
Expand Down Expand Up @@ -181,6 +194,14 @@ async def compute_interested_rooms(
from_token: Optional[StreamToken],
) -> SlidingSyncInterestedRooms:
"""Fetch the set of rooms that match the request"""
has_lists = sync_config.lists is not None and len(sync_config.lists) > 0
has_room_subscriptions = (
sync_config.room_subscriptions is not None
and len(sync_config.room_subscriptions) > 0
)

if not has_lists and not has_room_subscriptions:
return SlidingSyncInterestedRooms.empty()

if await self.store.have_finished_sliding_sync_background_jobs():
return await self._compute_interested_rooms_new_tables(
Expand Down

0 comments on commit de95529

Please sign in to comment.