summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrej Shadura <andrewsh@debian.org>2021-12-21 20:44:32 +0100
committerAndrej Shadura <andrewsh@debian.org>2021-12-21 20:44:32 +0100
commit67e681f5645009123fb836b8be4f8e92cfed2e7d (patch)
tree8c65be791fdc307d9c053491bb0e9e22312842bb
parent522b26015a1700725baaf37bce47f88682e76c89 (diff)
parent5e749433b9e317f6476f00da3ae4e2eaeb818f57 (diff)
Update upstream source from tag 'upstream/1.49.2'
Update to upstream version '1.49.2' with Debian dir 9ead48f4a2b550e9be70c2ffb9d67b288a407fa3
-rw-r--r--CHANGES.md26
-rw-r--r--docs/deprecation_policy.md4
-rw-r--r--synapse/__init__.py2
-rw-r--r--synapse/python_dependencies.py3
-rw-r--r--synapse/rest/client/sync.py10
-rw-r--r--tests/rest/client/test_relations.py10
6 files changed, 45 insertions, 10 deletions
diff --git a/CHANGES.md b/CHANGES.md
index 58217e65..9f6e2963 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,29 @@
+Synapse 1.49.2 (2021-12-21)
+===========================
+
+This release fixes a regression introduced in Synapse 1.49.0 which could cause `/sync` requests to take significantly longer. This would particularly affect "initial" syncs for users participating in a large number of rooms, and in extreme cases, could make it impossible for such users to log in on a new client.
+
+**Note:** in line with our [deprecation policy](https://matrix-org.github.io/synapse/latest/deprecation_policy.html) for platform dependencies, this will be the last release to support Python 3.6 and PostgreSQL 9.6, both of which have now reached upstream end-of-life. Synapse will require Python 3.7+ and PostgreSQL 10+.
+
+**Note:** We will also stop producing packages for Ubuntu 18.04 (Bionic Beaver) after this release, as it uses Python 3.6.
+
+Bugfixes
+--------
+
+- Fix a performance regression in `/sync` handling, introduced in 1.49.0. ([\#11583](https://github.com/matrix-org/synapse/issues/11583))
+
+Internal Changes
+----------------
+
+- Work around a build problem on Debian Buster. ([\#11625](https://github.com/matrix-org/synapse/issues/11625))
+
+
+Synapse 1.49.1 (2021-12-21)
+===========================
+
+Not released due to problems building the debian packages.
+
+
Synapse 1.49.0 (2021-12-14)
===========================
diff --git a/docs/deprecation_policy.md b/docs/deprecation_policy.md
index 06ea3405..359dac07 100644
--- a/docs/deprecation_policy.md
+++ b/docs/deprecation_policy.md
@@ -14,8 +14,8 @@ i.e. when a version reaches End of Life Synapse will withdraw support for that
version in future releases.
Details on the upstream support life cycles for Python and PostgreSQL are
-documented at https://endoflife.date/python and
-https://endoflife.date/postgresql.
+documented at [https://endoflife.date/python](https://endoflife.date/python) and
+[https://endoflife.date/postgresql](https://endoflife.date/postgresql).
Context
diff --git a/synapse/__init__.py b/synapse/__init__.py
index d44a03a2..95a49c20 100644
--- a/synapse/__init__.py
+++ b/synapse/__init__.py
@@ -47,7 +47,7 @@ try:
except ImportError:
pass
-__version__ = "1.49.0"
+__version__ = "1.49.2"
if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)):
# We import here so that we don't have to install a bunch of deps when
diff --git a/synapse/python_dependencies.py b/synapse/python_dependencies.py
index 7d269542..13fb6946 100644
--- a/synapse/python_dependencies.py
+++ b/synapse/python_dependencies.py
@@ -50,7 +50,8 @@ logger = logging.getLogger(__name__)
REQUIREMENTS = [
# we use the TYPE_CHECKER.redefine method added in jsonschema 3.0.0
"jsonschema>=3.0.0",
- "frozendict>=1",
+ # frozendict 2.1.2 is broken on Debian 10: https://github.com/Marco-Sulla/python-frozendict/issues/41
+ "frozendict>=1,<2.1.2",
"unpaddedbase64>=1.1.0",
"canonicaljson>=1.4.0",
# we use the type definitions added in signedjson 1.1.
diff --git a/synapse/rest/client/sync.py b/synapse/rest/client/sync.py
index 88e4f5e0..7f5846d3 100644
--- a/synapse/rest/client/sync.py
+++ b/synapse/rest/client/sync.py
@@ -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,
diff --git a/tests/rest/client/test_relations.py b/tests/rest/client/test_relations.py
index 397c12c2..1b58b731 100644
--- a/tests/rest/client/test_relations.py
+++ b/tests/rest/client/test_relations.py
@@ -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.