Fix 'rejected_events_metadata' background update ()

Turns out matrix.org has an event that has duplicate auth events (which really isn't supposed to happen, but here we are). This caused the background update to fail due to `UniqueViolation`.
This commit is contained in:
Erik Johnston 2021-03-03 16:04:24 +00:00 committed by GitHub
parent 922788c604
commit a4fa044c00
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 1 deletions
changelog.d
synapse/storage/databases/main

1
changelog.d/9537.bugfix Normal file
View file

@ -0,0 +1 @@
Fix rare edge case that caused a background update to fail if the server had rejected an event that had duplicate auth events.

View file

@ -696,7 +696,9 @@ class EventsBackgroundUpdatesStore(SQLBaseStore):
) )
if not has_event_auth: if not has_event_auth:
for auth_id in event.auth_event_ids(): # Old, dodgy, events may have duplicate auth events, which we
# need to deduplicate as we have a unique constraint.
for auth_id in set(event.auth_event_ids()):
auth_events.append( auth_events.append(
{ {
"room_id": event.room_id, "room_id": event.room_id,