Sliding Sync: Increase concurrency of sliding sync a bit (#17696)
For initial requests a typical page size is 20 rooms, so we may as well do the batching as 20. This should speed up bigger syncs a little bit.
This commit is contained in:
parent
9b83fb7c16
commit
1cb84aaab5
|
@ -0,0 +1 @@
|
||||||
|
Speed up sliding sync requests a bit where there are many room changes.
|
|
@ -267,7 +267,7 @@ class SlidingSyncHandler:
|
||||||
|
|
||||||
if relevant_rooms_to_send_map:
|
if relevant_rooms_to_send_map:
|
||||||
with start_active_span("sliding_sync.generate_room_entries"):
|
with start_active_span("sliding_sync.generate_room_entries"):
|
||||||
await concurrently_execute(handle_room, relevant_rooms_to_send_map, 10)
|
await concurrently_execute(handle_room, relevant_rooms_to_send_map, 20)
|
||||||
|
|
||||||
extensions = await self.extensions.get_extensions_response(
|
extensions = await self.extensions.get_extensions_response(
|
||||||
sync_config=sync_config,
|
sync_config=sync_config,
|
||||||
|
|
|
@ -38,6 +38,7 @@ from synapse.types.handlers.sliding_sync import (
|
||||||
SlidingSyncConfig,
|
SlidingSyncConfig,
|
||||||
SlidingSyncResult,
|
SlidingSyncResult,
|
||||||
)
|
)
|
||||||
|
from synapse.util.async_helpers import concurrently_execute
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from synapse.server import HomeServer
|
from synapse.server import HomeServer
|
||||||
|
@ -534,7 +535,10 @@ class SlidingSyncExtensionHandler:
|
||||||
# For rooms we've previously sent down, but aren't up to date, we
|
# For rooms we've previously sent down, but aren't up to date, we
|
||||||
# need to use the from token from the room status.
|
# need to use the from token from the room status.
|
||||||
if previously_rooms:
|
if previously_rooms:
|
||||||
for room_id, receipt_token in previously_rooms.items():
|
# Fetch any missing rooms concurrently.
|
||||||
|
|
||||||
|
async def handle_previously_room(room_id: str) -> None:
|
||||||
|
receipt_token = previously_rooms[room_id]
|
||||||
# TODO: Limit the number of receipts we're about to send down
|
# TODO: Limit the number of receipts we're about to send down
|
||||||
# for the room, if its too many we should TODO
|
# for the room, if its too many we should TODO
|
||||||
previously_receipts = (
|
previously_receipts = (
|
||||||
|
@ -546,6 +550,10 @@ class SlidingSyncExtensionHandler:
|
||||||
)
|
)
|
||||||
fetched_receipts.extend(previously_receipts)
|
fetched_receipts.extend(previously_receipts)
|
||||||
|
|
||||||
|
await concurrently_execute(
|
||||||
|
handle_previously_room, previously_rooms.keys(), 20
|
||||||
|
)
|
||||||
|
|
||||||
if initial_rooms:
|
if initial_rooms:
|
||||||
# We also always send down receipts for the current user.
|
# We also always send down receipts for the current user.
|
||||||
user_receipts = (
|
user_receipts = (
|
||||||
|
|
Loading…
Reference in New Issue