1
0
Fork 0
mirror of https://github.com/element-hq/synapse.git synced 2025-03-15 20:20:18 +00:00

Add fast path for sliding sync streams that only ask for extensions (#17768)

Principally useful for EX e2ee sliding sync connections.
This commit is contained in:
Erik Johnston 2024-09-30 12:59:50 +01:00 committed by GitHub
parent 93889eb2e7
commit de955293cf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 22 additions and 0 deletions

1
changelog.d/17768.misc Normal file
View file

@ -0,0 +1 @@
Improve performance of sliding sync connections that do not ask for any rooms.

View file

@ -123,6 +123,19 @@ class SlidingSyncInterestedRooms:
newly_left_rooms: AbstractSet[str] newly_left_rooms: AbstractSet[str]
dm_room_ids: 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( def filter_membership_for_sync(
*, *,
@ -181,6 +194,14 @@ class SlidingSyncRoomLists:
from_token: Optional[StreamToken], from_token: Optional[StreamToken],
) -> SlidingSyncInterestedRooms: ) -> SlidingSyncInterestedRooms:
"""Fetch the set of rooms that match the request""" """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(): if await self.store.have_finished_sliding_sync_background_jobs():
return await self._compute_interested_rooms_new_tables( return await self._compute_interested_rooms_new_tables(