Skip to content

Commit

Permalink
Fix bug where persisting some events fails after unclean shutdown. (#…
Browse files Browse the repository at this point in the history
…18137)

Introduced in #18107

`UniqueViolation: duplicate key value violates unique constraint
"state_groups_persisting_pkey"`
  • Loading branch information
erikjohnston authored Feb 5, 2025
1 parent 37e8934 commit 3391da3
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
1 change: 1 addition & 0 deletions changelog.d/18137.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix regression where persisting events in some rooms could fail after a previous unclean shutdown. Introduced in v1.124.0rc1.
14 changes: 12 additions & 2 deletions synapse/storage/databases/state/deletion.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,18 @@ def __init__(
self.db_pool = database
self._instance_name = hs.get_instance_name()

# TODO: Clear from `state_groups_persisting` any holdovers from previous
# running instance.
with db_conn.cursor(txn_name="_clear_existing_persising") as txn:
self._clear_existing_persising(txn)

def _clear_existing_persising(self, txn: LoggingTransaction) -> None:
"""On startup we clear any entries in `state_groups_persisting` that
match our instance name, in case of a previous unclean shutdown"""

self.db_pool.simple_delete_txn(
txn,
table="state_groups_persisting",
keyvalues={"instance_name": self._instance_name},
)

async def check_state_groups_and_bump_deletion(
self, state_groups: AbstractSet[int]
Expand Down

0 comments on commit 3391da3

Please sign in to comment.