From 0347508bf17a17e571aa7ebc654172a421f70757 Mon Sep 17 00:00:00 2001 From: Olivier 'reivilibre Date: Thu, 23 Oct 2025 12:32:13 +0100 Subject: [PATCH 1/4] Add a shortcut exit when no events to purge --- synapse/storage/databases/main/purge_events.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/synapse/storage/databases/main/purge_events.py b/synapse/storage/databases/main/purge_events.py index 10de1b35a6e..d55ea5cf7d4 100644 --- a/synapse/storage/databases/main/purge_events.py +++ b/synapse/storage/databases/main/purge_events.py @@ -239,6 +239,16 @@ def _purge_history_txn( txn.execute("SELECT event_id, should_delete FROM events_to_purge") event_rows = txn.fetchall() + + if len(event_rows) == 0: + logger.info("[purge] no events found to purge") + + # For the sake of cleanliness: drop the temp table. + # This will commit the txn in sqlite, so make sure to keep this actually last. + txn.execute("DROP TABLE events_to_purge") + # no referenced state groups + return set() + logger.info( "[purge] found %i events before cutoff, of which %i can be deleted", len(event_rows), From bdab99fdc47749506d9d84d76d01ee899c237351 Mon Sep 17 00:00:00 2001 From: Olivier 'reivilibre Date: Thu, 23 Oct 2025 12:33:02 +0100 Subject: [PATCH 2/4] Newsfile Signed-off-by: Olivier 'reivilibre --- changelog.d/19093.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/19093.misc diff --git a/changelog.d/19093.misc b/changelog.d/19093.misc new file mode 100644 index 00000000000..39ada26b685 --- /dev/null +++ b/changelog.d/19093.misc @@ -0,0 +1 @@ +Add a shortcut return when there are no events to purge. \ No newline at end of file From d2b407a4e0259efe8cc046167070e4c291c93506 Mon Sep 17 00:00:00 2001 From: Olivier 'reivilibre Date: Tue, 28 Oct 2025 16:30:10 +0000 Subject: [PATCH 3/4] Shortcut when no events are to be deleted --- synapse/storage/databases/main/purge_events.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/synapse/storage/databases/main/purge_events.py b/synapse/storage/databases/main/purge_events.py index d55ea5cf7d4..ed382f7d00b 100644 --- a/synapse/storage/databases/main/purge_events.py +++ b/synapse/storage/databases/main/purge_events.py @@ -240,8 +240,9 @@ def _purge_history_txn( txn.execute("SELECT event_id, should_delete FROM events_to_purge") event_rows = txn.fetchall() - if len(event_rows) == 0: - logger.info("[purge] no events found to purge") + deletable_events = sum(1 for e in event_rows if e[1]) + if deletable_events == 0: + logger.info("[purge] no events found to delete") # For the sake of cleanliness: drop the temp table. # This will commit the txn in sqlite, so make sure to keep this actually last. @@ -252,7 +253,7 @@ def _purge_history_txn( logger.info( "[purge] found %i events before cutoff, of which %i can be deleted", len(event_rows), - sum(1 for e in event_rows if e[1]), + deletable_events, ) logger.info("[purge] Finding new backward extremities") From 83952a7023594cc6b80fe1e1b995e48e23f7f373 Mon Sep 17 00:00:00 2001 From: Olivier 'reivilibre Date: Thu, 13 Nov 2025 11:41:09 +0000 Subject: [PATCH 4/4] Revert "Shortcut when no events are to be deleted" This reverts commit d2b407a4e0259efe8cc046167070e4c291c93506. --- synapse/storage/databases/main/purge_events.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/synapse/storage/databases/main/purge_events.py b/synapse/storage/databases/main/purge_events.py index ed382f7d00b..d55ea5cf7d4 100644 --- a/synapse/storage/databases/main/purge_events.py +++ b/synapse/storage/databases/main/purge_events.py @@ -240,9 +240,8 @@ def _purge_history_txn( txn.execute("SELECT event_id, should_delete FROM events_to_purge") event_rows = txn.fetchall() - deletable_events = sum(1 for e in event_rows if e[1]) - if deletable_events == 0: - logger.info("[purge] no events found to delete") + if len(event_rows) == 0: + logger.info("[purge] no events found to purge") # For the sake of cleanliness: drop the temp table. # This will commit the txn in sqlite, so make sure to keep this actually last. @@ -253,7 +252,7 @@ def _purge_history_txn( logger.info( "[purge] found %i events before cutoff, of which %i can be deleted", len(event_rows), - deletable_events, + sum(1 for e in event_rows if e[1]), ) logger.info("[purge] Finding new backward extremities")