From 98a35edc2351e7c39d67e8b848fa97438aa998a2 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 14 May 2025 15:44:41 +0100 Subject: [PATCH 1/5] Move index creatin to background update --- synapse/storage/databases/main/sliding_sync.py | 8 ++++++++ .../main/delta/92/03_ss_membership_snapshot_idx.sql | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/synapse/storage/databases/main/sliding_sync.py b/synapse/storage/databases/main/sliding_sync.py index a287fd2a3fd..e71a808454c 100644 --- a/synapse/storage/databases/main/sliding_sync.py +++ b/synapse/storage/databases/main/sliding_sync.py @@ -68,6 +68,14 @@ def __init__( columns=("membership_event_id",), ) + self.db_pool.updates.register_background_index_update( + update_name="sliding_sync_membership_snapshots_user_id_stream_ordering", + index_name="sliding_sync_membership_snapshots_user_id", + table="sliding_sync_membership_snapshots", + columns=("user_id" "event_stream_ordering",), + replaces_index="sliding_sync_membership_snapshots_user_id", + ) + async def get_latest_bump_stamp_for_room( self, room_id: str, diff --git a/synapse/storage/schema/main/delta/92/03_ss_membership_snapshot_idx.sql b/synapse/storage/schema/main/delta/92/03_ss_membership_snapshot_idx.sql index c694203f95e..7ff1eab1901 100644 --- a/synapse/storage/schema/main/delta/92/03_ss_membership_snapshot_idx.sql +++ b/synapse/storage/schema/main/delta/92/03_ss_membership_snapshot_idx.sql @@ -12,5 +12,5 @@ -- . -- So we can fetch all rooms for a given user sorted by stream order -DROP INDEX IF EXISTS sliding_sync_membership_snapshots_user_id; -CREATE INDEX IF NOT EXISTS sliding_sync_membership_snapshots_user_id ON sliding_sync_membership_snapshots(user_id, event_stream_ordering); +INSERT INTO background_updates (ordering, update_name, progress_json) VALUES + (9203, 'sliding_sync_membership_snapshots_user_id_stream_ordering', '{}'); From 9f805fa36da4ea4a3fe1c9c12a286a262b6fad8a Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 14 May 2025 15:45:58 +0100 Subject: [PATCH 2/5] Newsfile --- changelog.d/18439.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/18439.bugfix diff --git a/changelog.d/18439.bugfix b/changelog.d/18439.bugfix new file mode 100644 index 00000000000..5ee9bda4746 --- /dev/null +++ b/changelog.d/18439.bugfix @@ -0,0 +1 @@ +Fix startup being blocked on creating a new index. Introduced in v1.130.0rc1. From 288f61773b1964e5c01e2e4deb9f296391bd0417 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 14 May 2025 15:59:10 +0100 Subject: [PATCH 3/5] Update synapse/storage/databases/main/sliding_sync.py Co-authored-by: Devon Hudson --- synapse/storage/databases/main/sliding_sync.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synapse/storage/databases/main/sliding_sync.py b/synapse/storage/databases/main/sliding_sync.py index e71a808454c..f5fc1fe2bca 100644 --- a/synapse/storage/databases/main/sliding_sync.py +++ b/synapse/storage/databases/main/sliding_sync.py @@ -72,7 +72,7 @@ def __init__( update_name="sliding_sync_membership_snapshots_user_id_stream_ordering", index_name="sliding_sync_membership_snapshots_user_id", table="sliding_sync_membership_snapshots", - columns=("user_id" "event_stream_ordering",), + columns=("user_id", "event_stream_ordering",), replaces_index="sliding_sync_membership_snapshots_user_id", ) From 3f4cc73f5feed432fc2bfe5cb07745a3a8b69958 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 14 May 2025 16:04:01 +0100 Subject: [PATCH 4/5] Move schema delta --- ...rship_snapshot_idx.sql => 04_ss_membership_snapshot_idx.sql} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename synapse/storage/schema/main/delta/92/{03_ss_membership_snapshot_idx.sql => 04_ss_membership_snapshot_idx.sql} (91%) diff --git a/synapse/storage/schema/main/delta/92/03_ss_membership_snapshot_idx.sql b/synapse/storage/schema/main/delta/92/04_ss_membership_snapshot_idx.sql similarity index 91% rename from synapse/storage/schema/main/delta/92/03_ss_membership_snapshot_idx.sql rename to synapse/storage/schema/main/delta/92/04_ss_membership_snapshot_idx.sql index 7ff1eab1901..6f5b7cb06e7 100644 --- a/synapse/storage/schema/main/delta/92/03_ss_membership_snapshot_idx.sql +++ b/synapse/storage/schema/main/delta/92/04_ss_membership_snapshot_idx.sql @@ -13,4 +13,4 @@ -- So we can fetch all rooms for a given user sorted by stream order INSERT INTO background_updates (ordering, update_name, progress_json) VALUES - (9203, 'sliding_sync_membership_snapshots_user_id_stream_ordering', '{}'); + (9204, 'sliding_sync_membership_snapshots_user_id_stream_ordering', '{}'); From bdd4498f5eedb203e9a0948a35fbf08e3aaa669a Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 14 May 2025 16:11:09 +0100 Subject: [PATCH 5/5] Fixup --- synapse/storage/databases/main/sliding_sync.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/synapse/storage/databases/main/sliding_sync.py b/synapse/storage/databases/main/sliding_sync.py index f5fc1fe2bca..6a62b11d1ed 100644 --- a/synapse/storage/databases/main/sliding_sync.py +++ b/synapse/storage/databases/main/sliding_sync.py @@ -70,9 +70,9 @@ def __init__( self.db_pool.updates.register_background_index_update( update_name="sliding_sync_membership_snapshots_user_id_stream_ordering", - index_name="sliding_sync_membership_snapshots_user_id", + index_name="sliding_sync_membership_snapshots_user_id_stream_ordering", table="sliding_sync_membership_snapshots", - columns=("user_id", "event_stream_ordering",), + columns=("user_id", "event_stream_ordering"), replaces_index="sliding_sync_membership_snapshots_user_id", )