From 89df89525714463bce39808b039c2fbc68b2afaa Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Wed, 12 Nov 2025 13:59:17 -0600 Subject: [PATCH 1/4] Point out which event caused the exception when checking MSC4932 redactions --- .../storage/databases/main/events_worker.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/synapse/storage/databases/main/events_worker.py b/synapse/storage/databases/main/events_worker.py index 29bc1b982a0..fc8b5fc4d89 100644 --- a/synapse/storage/databases/main/events_worker.py +++ b/synapse/storage/databases/main/events_worker.py @@ -1604,14 +1604,17 @@ def _fetch_event_rows( to_check = [] events: list[_EventRow] = [] for e in evs: - event = event_dict.get(e) - if not event: - continue - events.append(event) - event_json = json.loads(event.json) - room_id = event_json.get("room_id") - user_id = event_json.get("sender") - to_check.append((room_id, user_id)) + try: + event = event_dict.get(e) + if not event: + continue + events.append(event) + event_json = json.loads(event.json) + room_id = event_json.get("room_id") + user_id = event_json.get("sender") + to_check.append((room_id, user_id)) + except Exception as exc: + raise InvalidEventError("Invalid event %s" % (event_id,)) from exc # likely that some of these events may be for the same room/user combo, in # which case we don't need to do redundant queries From 43c225beb80356c5ae4e3dbdd767cc3cb48b5de7 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Wed, 12 Nov 2025 14:04:05 -0600 Subject: [PATCH 2/4] Add changelog --- changelog.d/19169.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/19169.misc diff --git a/changelog.d/19169.misc b/changelog.d/19169.misc new file mode 100644 index 00000000000..57ad0cf4a6c --- /dev/null +++ b/changelog.d/19169.misc @@ -0,0 +1 @@ +Point out which event caused the exception when checking MSC4932 redactions. From be5f7f13551d29bcbfb81ae861913d4777acea9d Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Wed, 12 Nov 2025 14:07:43 -0600 Subject: [PATCH 3/4] Use correct MSC number --- changelog.d/19169.misc | 2 +- synapse/storage/databases/main/events_worker.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog.d/19169.misc b/changelog.d/19169.misc index 57ad0cf4a6c..caa11bad95f 100644 --- a/changelog.d/19169.misc +++ b/changelog.d/19169.misc @@ -1 +1 @@ -Point out which event caused the exception when checking MSC4932 redactions. +Point out which event caused the exception when checking [MSC4293](https://github.com/matrix-org/matrix-spec-proposals/pull/4293) redactions. diff --git a/synapse/storage/databases/main/events_worker.py b/synapse/storage/databases/main/events_worker.py index fc8b5fc4d89..3eb5d4e38fb 100644 --- a/synapse/storage/databases/main/events_worker.py +++ b/synapse/storage/databases/main/events_worker.py @@ -1600,7 +1600,7 @@ def _fetch_event_rows( if d: d.redactions.append(redacter) - # check for MSC4932 redactions + # check for MSC4293 redactions to_check = [] events: list[_EventRow] = [] for e in evs: From 077030eedfb27c2a256ac8ddc52be6966523ce67 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Thu, 13 Nov 2025 09:55:38 -0600 Subject: [PATCH 4/4] Use f-string formatting Co-authored-by: reivilibre --- synapse/storage/databases/main/events_worker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synapse/storage/databases/main/events_worker.py b/synapse/storage/databases/main/events_worker.py index 3eb5d4e38fb..4cf708442d4 100644 --- a/synapse/storage/databases/main/events_worker.py +++ b/synapse/storage/databases/main/events_worker.py @@ -1614,7 +1614,7 @@ def _fetch_event_rows( user_id = event_json.get("sender") to_check.append((room_id, user_id)) except Exception as exc: - raise InvalidEventError("Invalid event %s" % (event_id,)) from exc + raise InvalidEventError(f"Invalid event {event_id}") from exc # likely that some of these events may be for the same room/user combo, in # which case we don't need to do redundant queries