Compare commits

...

3 Commits

Author SHA1 Message Date
Erik Johnston
9b39b11817 Fix lint 2024-09-27 16:47:10 +01:00
Erik Johnston
075e8d3ca8 Newsfile 2024-09-27 16:40:34 +01:00
Erik Johnston
706bfbbb88 Add fast path for sliding sync streams that only ask for extensions
Principally useful for EX e2ee sliding sync connections.
2024-09-27 16:39:58 +01:00
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]
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(
*,
@@ -181,6 +194,14 @@ class SlidingSyncRoomLists:
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(