diff options
-rw-r--r-- | changelog.d/13089.misc | 1 | ||||
-rw-r--r-- | synapse/handlers/federation_event.py | 6 |
2 files changed, 3 insertions, 4 deletions
diff --git a/changelog.d/13089.misc b/changelog.d/13089.misc new file mode 100644 index 0000000000..5868507cb7 --- /dev/null +++ b/changelog.d/13089.misc @@ -0,0 +1 @@ +Fix a long-standing bug where a finished logging context would be re-started when Synapse failed to persist an event from federation. diff --git a/synapse/handlers/federation_event.py b/synapse/handlers/federation_event.py index 565ffd7cfd..b7c54e642f 100644 --- a/synapse/handlers/federation_event.py +++ b/synapse/handlers/federation_event.py @@ -57,7 +57,7 @@ from synapse.event_auth import ( from synapse.events import EventBase from synapse.events.snapshot import EventContext from synapse.federation.federation_client import InvalidResponseError -from synapse.logging.context import nested_logging_context, run_in_background +from synapse.logging.context import nested_logging_context from synapse.metrics.background_process_metrics import run_as_background_process from synapse.replication.http.devices import ReplicationUserDevicesResyncRestServlet from synapse.replication.http.federation import ( @@ -1964,9 +1964,7 @@ class FederationEventHandler: event.room_id, [(event, context)], backfilled=backfilled ) except Exception: - run_in_background( - self._store.remove_push_actions_from_staging, event.event_id - ) + await self._store.remove_push_actions_from_staging(event.event_id) raise async def persist_events_and_notify( |