mirror of
https://github.com/element-hq/synapse.git
synced 2025-03-15 12:17:48 +00:00
Minor perf speed up for large accounts on SSS (#17751)
This works as instead of passing *all* rooms to `record_sent_rooms` we only need to pass rooms that were previously not in the LIVE state. This came from a py-spy where we were spending ~10% CPU calling these functions. Note that `record_sent_rooms` is a no-op for rooms that are already in the `LIVE` state, so we only need to call them for `PREVIOUSLY` or `INITIAL` rooms.
This commit is contained in:
parent
ef9ef99f59
commit
ece66ba61c
2 changed files with 7 additions and 4 deletions
1
changelog.d/17751.misc
Normal file
1
changelog.d/17751.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Minor performance increase for large accounts using sliding sync.
|
|
@ -572,7 +572,8 @@ class SlidingSyncExtensionHandler:
|
||||||
|
|
||||||
# Now record which rooms are now up to data, and which rooms have
|
# Now record which rooms are now up to data, and which rooms have
|
||||||
# pending updates to send.
|
# pending updates to send.
|
||||||
new_connection_state.account_data.record_sent_rooms(relevant_room_ids)
|
new_connection_state.account_data.record_sent_rooms(previously_rooms.keys())
|
||||||
|
new_connection_state.account_data.record_sent_rooms(initial_rooms)
|
||||||
missing_updates = (
|
missing_updates = (
|
||||||
all_updates_since_the_from_token.keys() - relevant_room_ids
|
all_updates_since_the_from_token.keys() - relevant_room_ids
|
||||||
)
|
)
|
||||||
|
@ -763,9 +764,10 @@ class SlidingSyncExtensionHandler:
|
||||||
|
|
||||||
room_id_to_receipt_map[room_id] = {"type": type, "content": content}
|
room_id_to_receipt_map[room_id] = {"type": type, "content": content}
|
||||||
|
|
||||||
# Now we update the per-connection state to track which receipts we have
|
# Update the per-connection state to track which rooms we have sent
|
||||||
# and haven't sent down.
|
# all the receipts for.
|
||||||
new_connection_state.receipts.record_sent_rooms(relevant_room_ids)
|
new_connection_state.receipts.record_sent_rooms(previously_rooms.keys())
|
||||||
|
new_connection_state.receipts.record_sent_rooms(initial_rooms)
|
||||||
|
|
||||||
if from_token:
|
if from_token:
|
||||||
# Now find the set of rooms that may have receipts that we're not sending
|
# Now find the set of rooms that may have receipts that we're not sending
|
||||||
|
|
Loading…
Add table
Reference in a new issue