diff options
author | Sean Quah <8349537+squahtx@users.noreply.github.com> | 2022-06-17 10:22:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-17 10:22:50 +0100 |
commit | 9372f6f842e3f8c0166d68a3a49ccc73a76954ea (patch) | |
tree | 0fd9be80519f0e258f699510a864a72fb1c0f9f1 /synapse/handlers/federation_event.py | |
parent | Add desc to `get_earliest_token_for_stats` (#13085) (diff) | |
download | synapse-9372f6f842e3f8c0166d68a3a49ccc73a76954ea.tar.xz |
Fix logging context misuse when we fail to persist a federation event (#13089)
When we fail to persist a federation event, we kick off a task to remove its push actions in the background, using the current logging context. Since we don't `await` that task, we may finish our logging context before the task finishes. There's no reason to not `await` the task, so let's do that. Signed-off-by: Sean Quah <seanq@matrix.org>
Diffstat (limited to '')
-rw-r--r-- | synapse/handlers/federation_event.py | 6 |
1 files changed, 2 insertions, 4 deletions
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( |