From 234d07eb09946543546ce63463c3bfd40465e1d6 Mon Sep 17 00:00:00 2001
From: Mathieu Velten <mathieu.velten@beta.gouv.fr>
Date: Thu, 19 Dec 2024 14:02:06 +0000
Subject: [PATCH] Disable statement timeout during room purge (#18017)

This is already done for `purge_history` but seems to have been
forgotten for `purge_room`.
---
 changelog.d/18017.misc                         | 1 +
 synapse/storage/databases/main/purge_events.py | 5 +++++
 2 files changed, 6 insertions(+)
 create mode 100644 changelog.d/18017.misc

diff --git a/changelog.d/18017.misc b/changelog.d/18017.misc
new file mode 100644
index 0000000000..6b943a5bed
--- /dev/null
+++ b/changelog.d/18017.misc
@@ -0,0 +1 @@
+Disable DB statement timeout when doing a purge room since it can be quite long.
diff --git a/synapse/storage/databases/main/purge_events.py b/synapse/storage/databases/main/purge_events.py
index 08244153a3..c195685af8 100644
--- a/synapse/storage/databases/main/purge_events.py
+++ b/synapse/storage/databases/main/purge_events.py
@@ -376,6 +376,11 @@ class PurgeEventsStore(StateGroupWorkerStore, CacheInvalidationWorkerStore):
                 (room_id,),
             )
 
+        if isinstance(self.database_engine, PostgresEngine):
+            # Disable statement timeouts for this transaction; purging rooms can
+            # take a while!
+            txn.execute("SET LOCAL statement_timeout = 0")
+
         # First, fetch all the state groups that should be deleted, before
         # we delete that information.
         txn.execute(
-- 
GitLab