mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Disable aggregation bundling on /sync
responses (#11583)
* Disable aggregation bundling on `/sync` responses A partial revert of #11478. This turns out to have had a significant CPU impact on initial-sync handling. For now, let's disable it, until we find a more efficient way of achieving this. * Fix tests. Co-authored-by: Patrick Cloke <patrickc@matrix.org>
This commit is contained in:
parent
92906e1b60
commit
76aa5537ad
1
changelog.d/11583.bugfix
Normal file
1
changelog.d/11583.bugfix
Normal file
@ -0,0 +1 @@
|
||||
Fix a performance regression in `/sync` handling, introduced in 1.49.0.
|
@ -522,7 +522,15 @@ class SyncRestServlet(RestServlet):
|
||||
time_now=time_now,
|
||||
# Don't bother to bundle aggregations if the timeline is unlimited,
|
||||
# as clients will have all the necessary information.
|
||||
bundle_aggregations=room.timeline.limited,
|
||||
# bundle_aggregations=room.timeline.limited,
|
||||
#
|
||||
# richvdh 2021-12-15: disable this temporarily as it has too high an
|
||||
# overhead for initialsyncs. We need to figure out a way that the
|
||||
# bundling can be done *before* the events are stored in the
|
||||
# SyncResponseCache so that this part can be synchronous.
|
||||
#
|
||||
# Ensure to re-enable the test at tests/rest/client/test_relations.py::RelationsTestCase.test_bundled_aggregations.
|
||||
bundle_aggregations=False,
|
||||
token_id=token_id,
|
||||
event_format=event_formatter,
|
||||
only_event_fields=only_fields,
|
||||
|
@ -574,11 +574,11 @@ class RelationsTestCase(unittest.HomeserverTestCase):
|
||||
assert_bundle(channel.json_body["event"]["unsigned"].get("m.relations"))
|
||||
|
||||
# Request sync.
|
||||
channel = self.make_request("GET", "/sync", access_token=self.user_token)
|
||||
self.assertEquals(200, channel.code, channel.json_body)
|
||||
room_timeline = channel.json_body["rooms"]["join"][self.room]["timeline"]
|
||||
self.assertTrue(room_timeline["limited"])
|
||||
_find_and_assert_event(room_timeline["events"])
|
||||
# channel = self.make_request("GET", "/sync", access_token=self.user_token)
|
||||
# self.assertEquals(200, channel.code, channel.json_body)
|
||||
# room_timeline = channel.json_body["rooms"]["join"][self.room]["timeline"]
|
||||
# self.assertTrue(room_timeline["limited"])
|
||||
# _find_and_assert_event(room_timeline["events"])
|
||||
|
||||
# Note that /relations is tested separately in test_aggregation_get_event_for_thread
|
||||
# since it needs different data configured.
|
||||
|
Loading…
Reference in New Issue
Block a user