From 81364db49b7778021edcd5912555dd3e1583c1b8 Mon Sep 17 00:00:00 2001
From: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Date: Tue, 22 Feb 2022 13:33:22 +0000
Subject: [PATCH] Run `_handle_queued_pdus` as a background process (#12041)

... to ensure it gets a proper log context, mostly.
---
 changelog.d/12041.misc         | 1 +
 synapse/handlers/federation.py | 6 ++++--
 2 files changed, 5 insertions(+), 2 deletions(-)
 create mode 100644 changelog.d/12041.misc

diff --git a/changelog.d/12041.misc b/changelog.d/12041.misc
new file mode 100644
index 0000000000..e56dc093de
--- /dev/null
+++ b/changelog.d/12041.misc
@@ -0,0 +1 @@
+After joining a room, create a dedicated logcontext to process the queued events.
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py
index c8356f233d..e9ac920bcc 100644
--- a/synapse/handlers/federation.py
+++ b/synapse/handlers/federation.py
@@ -49,8 +49,8 @@ from synapse.logging.context import (
     make_deferred_yieldable,
     nested_logging_context,
     preserve_fn,
-    run_in_background,
 )
+from synapse.metrics.background_process_metrics import run_as_background_process
 from synapse.replication.http.federation import (
     ReplicationCleanRoomRestServlet,
     ReplicationStoreRoomOnOutlierMembershipRestServlet,
@@ -559,7 +559,9 @@ class FederationHandler:
             # lots of requests for missing prev_events which we do actually
             # have. Hence we fire off the background task, but don't wait for it.
 
-            run_in_background(self._handle_queued_pdus, room_queue)
+            run_as_background_process(
+                "handle_queued_pdus", self._handle_queued_pdus, room_queue
+            )
 
     async def do_knock(
         self,
-- 
GitLab