diff --git a/10719-Fix-instert-of-duplicate-key-into-event_json.patch b/10719-Fix-instert-of-duplicate-key-into-event_json.patch new file mode 100644 index 0000000..20670b7 --- /dev/null +++ b/10719-Fix-instert-of-duplicate-key-into-event_json.patch @@ -0,0 +1,71 @@ +From d8917666d6198873bca140c3c511ae230ee698ec Mon Sep 17 00:00:00 2001 +From: Jan Zerebecki +Date: Mon, 30 Aug 2021 17:31:31 +0200 +Subject: [PATCH] Fix instert of duplicate key into event_json + +When an incoming event id is present in event_json but not in events +synapse fails trying to insert it with "psycopg2.errors.UniqueViolation: +duplicate key value violates unique constraints", because it is only +filtered based on those that are in events. + +I don't know why those become out of sync, but this happening was +reported by others before. + +Fix this by using an upsert (which inserts or updates existing records) +instead of a normal insert. + +Please verify that this is the safe and correct thing to do before +merging this. Verify e.g. that it doesn't allow breaking history +integrity or something like it. As I don't know enough to understand +what this change entails. + +Fixes: https://github.com/matrix-org/synapse/issues/10718 +Signed-off-by: Jan Zerebecki +--- + changelog.d/10719.bugfix | 1 + + synapse/storage/databases/main/events.py | 22 +++++++++++----------- + 2 files changed, 12 insertions(+), 11 deletions(-) + create mode 100644 changelog.d/10719.bugfix + +diff --git a/changelog.d/10719.bugfix b/changelog.d/10719.bugfix +new file mode 100644 +index 00000000000..d928f74f6bf +--- /dev/null ++++ b/changelog.d/10719.bugfix +@@ -0,0 +1 @@ ++Fix instert failure because of duplicate key when an incoming event id is present in the table event_json but not in events. +diff --git a/synapse/storage/databases/main/events.py b/synapse/storage/databases/main/events.py +index 40b53274fb3..830af72d5e6 100644 +--- a/synapse/storage/databases/main/events.py ++++ b/synapse/storage/databases/main/events.py +@@ -1334,19 +1334,19 @@ def get_internal_metadata(event): + + return im + +- self.db_pool.simple_insert_many_txn( ++ self.db_pool.simple_upsert_many_txn( + txn, + table="event_json", +- values=[ +- { +- "event_id": event.event_id, +- "room_id": event.room_id, +- "internal_metadata": json_encoder.encode( +- get_internal_metadata(event) +- ), +- "json": json_encoder.encode(event_dict(event)), +- "format_version": event.format_version, +- } ++ key_names=["event_id"], ++ key_values=[[event.event_id] for event, _ in events_and_contexts], ++ value_names=["room_id", "internal_metadata", "json", "format_version"], ++ value_values=[ ++ [ ++ event.room_id, ++ json_encoder.encode(get_internal_metadata(event)), ++ json_encoder.encode(event_dict(event)), ++ event.format_version, ++ ] + for event, _ in events_and_contexts + ], + ) diff --git a/_service b/_service index b647768..b9737e3 100644 --- a/_service +++ b/_service @@ -4,11 +4,11 @@ @PARENT_TAG@ https://github.com/matrix-org/synapse.git git - v1.42.0 + v1.43.0 v(.*) \1 diff --git a/matrix-synapse-1.42.0.obscpio b/matrix-synapse-1.42.0.obscpio deleted file mode 100644 index d1de875..0000000 --- a/matrix-synapse-1.42.0.obscpio +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ad96ff729a81bc9db61eb967c4e2c0d53990525e385b29393be956a287157b18 -size 31079949 diff --git a/matrix-synapse-1.43.0.obscpio b/matrix-synapse-1.43.0.obscpio new file mode 100644 index 0000000..3a70671 --- /dev/null +++ b/matrix-synapse-1.43.0.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd1fe88a1edb6bc48f0b5c185791eda223e87a036f0f40c3510b1254753315ae +size 31159821 diff --git a/matrix-synapse-test.spec b/matrix-synapse-test.spec index 4d0eaed..ae1f08c 100644 --- a/matrix-synapse-test.spec +++ b/matrix-synapse-test.spec @@ -27,7 +27,7 @@ %define pkgname matrix-synapse Name: %{pkgname}-test -Version: 1.42.0 +Version: 1.43.0 Release: 0 Summary: Test package for %{pkgname} License: Apache-2.0 diff --git a/matrix-synapse.changes b/matrix-synapse.changes index 8d0cb7b..e98a6d0 100644 --- a/matrix-synapse.changes +++ b/matrix-synapse.changes @@ -1,3 +1,110 @@ +------------------------------------------------------------------- +Tue Sep 21 13:41:59 UTC 2021 - Marcus Rueckert + +- Update to 1.43.0 + This release drops support for the deprecated, unstable API for + MSC2858, as well as the undocumented experimental.msc2858_enabled + config option. Client authors should update their clients to use + the stable API, available since Synapse 1.30. + + - Features + - Allow room creators to send historical events specified by + MSC2716 in existing room versions. (#10566) + - Add config option to use non-default manhole password and + keys. (#10643) + - Skip final GC at shutdown to improve restart performance. + (#10712) + - Allow configuration of the oEmbed URLs used for URL previews. + (#10714, #10759) + - Prefer room version 9 for restricted rooms per the room + version capabilities API. (#10772) + - Bugfixes + - Added opentracing logging to help debug #9424. (#10828) + - Fix a long-standing bug where room avatars were not included + in email notifications. (#10658) + - Fix a bug where the ordering algorithm was skipping the + origin_server_ts step in the spaces summary resulting in + unstable room orderings. (#10730) + - Fix edge case when persisting events into a room where there + are multiple events we previously hadn't calculated auth + chains for (and hadn't marked as needing to be calculated). + (#10743) + - Fix a bug which prevented calls to /createRoom that included + the room_alias_name parameter from being handled by worker + processes. (#10757) + - Fix a bug which prevented user registration via SSO to + require consent tracking for SSO mapping providers that don't + prompt for Matrix ID selection. Contributed by @AndrewFerr. + (#10733) + - Only return the stripped state events for the m.space.child + events in a room for the spaces summary from MSC2946. + (#10760) + - Properly handle room upgrades of spaces. (#10774) + - Fix a bug which generated invalid homeserver config when the + frontend_proxy worker type was passed to the Synapse + Worker-based Complement image. (#10783) + - Improved Documentation + - Minor fix to the media_repository developer documentation. + Contributed by @cuttingedge1109. (#10556) + - Update the documentation to note that the /spaces and + /hierarchy endpoints can be routed to workers. (#10648) + - Clarify admin API documentation on undoing room deletions. + (#10735) + - Split up the modules documentation and add examples for + module developers. (#10758) + - Correct 2 typographical errors in the Log Contexts + documentation. (#10795) + - Fix a wording mistake in the sample configuration. + Contributed by @BramvdnHeuvel:nltrix.net. (#10804) + - Deprecations and Removals + - Remove the unstable MSC2858 API, including the undocumented + experimental.msc2858_enabled config option. The unstable API + has been deprecated since Synapse 1.35. Client authors should + update their clients to use the stable API introduced in + Synapse 1.30 if they have not already done so. (#10693) + - Internal Changes + - Add OpenTracing logging to help debug stuck messages (as + described by issue #9424). (#10704) + - Add type annotations to the synapse.util package. (#10601) + - Ensure rooms.creator field is always populated for easy + lookup in MSC2716 usage later. (#10697) + - Add missing type hints to REST servlets. (#10707, #10728, + #10736) + - Do not include rooms with unknown room versions in the spaces + summary results. (#10727) + - Additional error checking for the preset field when creating + a room. (#10738) + - Clean up some of the federation event authentication code for + clarity. (#10744, #10745, #10746, #10771, #10773, #10781) + - Add an index to presence_stream to hopefully speed up + startups a little. (#10748) + - Refactor event size checking code to simplify searching the + codebase for the origins of certain error strings that are + occasionally emitted. (#10750) + - Move tests relating to rooms having encryption out of the + user directory tests. (#10752) + - Use attrs internally for the URL preview code & update + documentation. (#10753) + - Minor speed ups when joining large rooms over federation. + (#10754, #10755, #10756, #10780, #10784) + - Add a constant for m.federate. (#10775) + - Add a script to update the Debian changelog in a Docker + container for systems that are not Debian-based. (#10778) + - Change the format of authenticated users in logs when a user + is being puppeted by and admin user. (#10779) + - Remove fixed and flakey tests from the Sytest blacklist. + (#10788) + - Improve internal details of the user directory code. (#10789) + - Use direct references to config flags. (#10798) + - Ensure the Rust reporter passes type checking with + jaeger-client 4.7's type annotations. (#10799) + +------------------------------------------------------------------- +Tue Sep 21 11:34:59 UTC 2021 - Marcus Rueckert + +- disable 10719-Fix-instert-of-duplicate-key-into-event_json.patch + until upstream decided if they want to accept it + ------------------------------------------------------------------- Tue Sep 7 16:11:58 UTC 2021 - Marcus Rueckert @@ -97,6 +204,11 @@ Tue Sep 7 16:11:58 UTC 2021 - Marcus Rueckert a separate FederationEventHandler. (#10692) - Remove unused compare_digest function. (#10706) +------------------------------------------------------------------- +Thu Sep 2 09:52:14 UTC 2021 - Jan Zerebecki + +- Add 10719-Fix-instert-of-duplicate-key-into-event_json.patch + ------------------------------------------------------------------- Tue Aug 31 14:21:51 UTC 2021 - Marcus Rueckert diff --git a/matrix-synapse.obsinfo b/matrix-synapse.obsinfo index 76f9515..f18d0c6 100644 --- a/matrix-synapse.obsinfo +++ b/matrix-synapse.obsinfo @@ -1,5 +1,5 @@ name: matrix-synapse -version: 1.42.0 -mtime: 1631029176 -commit: e7b78dcc4a6bf8fdb71782640932da8dff7cc5ed +version: 1.43.0 +mtime: 1632223487 +commit: 9ffa787eb243c98a6ca1ecd9eac4a6b5dac2bef0 diff --git a/matrix-synapse.spec b/matrix-synapse.spec index 4865ac4..e0e1e15 100644 --- a/matrix-synapse.spec +++ b/matrix-synapse.spec @@ -47,7 +47,7 @@ %define pkgname matrix-synapse %define eggname matrix_synapse Name: %{pkgname} -Version: 1.42.0 +Version: 1.43.0 Release: 0 Summary: Matrix protocol reference homeserver License: Apache-2.0 @@ -65,6 +65,9 @@ Source51: matrix-synapse-generate-config.sh Source99: series Patch: matrix-synapse-1.4.1-paths.patch Patch1: dont-bump-cryptography-with-system-openssl.patch +# https://github.com/matrix-org/synapse/pull/10719 +# disable by marking as source until we get a decision upstream +Source100: 10719-Fix-instert-of-duplicate-key-into-event_json.patch BuildRequires: %{use_python}-base >= 3.5 BuildRequires: %{use_python}-setuptools BuildRequires: fdupes @@ -73,7 +76,7 @@ BuildRequires: systemd-rpm-macros BuildRequires: sysuser-shadow BuildRequires: sysuser-tools BuildRequires: unzip -%{?systemd_requires} +%{?systemd_ordering} %{sysusers_requires} %requires_eq %{use_python}-base # NOTE: Keep this is in the same order as synapse/python_dependencie.py.