From 61b7c31772034fe63b311bd63d7c3d7e24551cdf Mon Sep 17 00:00:00 2001
From: Eric Eastwood <eric.eastwood@beta.gouv.fr>
Date: Wed, 18 Sep 2024 13:12:14 -0500
Subject: [PATCH] Sliding Sync: Shortcut for checking if certain background
 updates have completed (#17724)

Shortcut for checking if certain background updates have completed

Pulling this change out from one of @erikjohnston's branches
(https://github.com/element-hq/synapse/compare/develop...erikj/ss_perf)

---------

Co-authored-by: Erik Johnston <erikj@element.io>
---
 changelog.d/17724.misc                | 1 +
 synapse/storage/background_updates.py | 6 ++++++
 2 files changed, 7 insertions(+)
 create mode 100644 changelog.d/17724.misc

diff --git a/changelog.d/17724.misc b/changelog.d/17724.misc
new file mode 100644
index 0000000000..630443f179
--- /dev/null
+++ b/changelog.d/17724.misc
@@ -0,0 +1 @@
+Shortcut for checking if certain background updates have completed (utilized in Sliding Sync).
diff --git a/synapse/storage/background_updates.py b/synapse/storage/background_updates.py
index 1194b58ffb..34139f580d 100644
--- a/synapse/storage/background_updates.py
+++ b/synapse/storage/background_updates.py
@@ -490,6 +490,12 @@ class BackgroundUpdater:
         if self._all_done:
             return True
 
+        # We now check if we have completed all pending background updates. We
+        # do this as once this returns True then it will set `self._all_done`
+        # and we can skip checking the database in future.
+        if await self.has_completed_background_updates():
+            return True
+
         rows = await self.db_pool.simple_select_many_batch(
             table="background_updates",
             column="update_name",
-- 
GitLab