mirror of
https://mau.dev/maunium/synapse.git
synced 2024-11-15 22:42:23 +01:00
Merge pull request #3603 from matrix-org/erikj/handle_outliers
Correctly handle outliers during persist events
This commit is contained in:
commit
3849f7f69f
2 changed files with 9 additions and 6 deletions
1
changelog.d/3601.bugfix
Normal file
1
changelog.d/3601.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix failure to persist events over federation under load
|
|
@ -574,11 +574,13 @@ class EventsStore(EventsWorkerStore):
|
|||
|
||||
for ev, ctx in events_context:
|
||||
if ctx.state_group is None:
|
||||
# I don't think this can happen, but let's double-check
|
||||
# This should only happen for outlier events.
|
||||
if not ev.internal_metadata.is_outlier():
|
||||
raise Exception(
|
||||
"Context for new extremity event %s has no state "
|
||||
"Context for new event %s has no state "
|
||||
"group" % (ev.event_id, ),
|
||||
)
|
||||
continue
|
||||
|
||||
if ctx.state_group in state_groups_map:
|
||||
continue
|
||||
|
@ -606,7 +608,7 @@ class EventsStore(EventsWorkerStore):
|
|||
for event_id in new_latest_event_ids:
|
||||
# First search in the list of new events we're adding.
|
||||
for ev, ctx in events_context:
|
||||
if event_id == ev.event_id:
|
||||
if event_id == ev.event_id and ctx.state_group is not None:
|
||||
event_id_to_state_group[event_id] = ctx.state_group
|
||||
break
|
||||
else:
|
||||
|
|
Loading…
Reference in a new issue