1
0
Fork 0
mirror of https://github.com/element-hq/synapse.git synced 2025-03-06 16:06:52 +00:00

Fix bug where persisting some events fails after unclean shutdown. (#18137)

Introduced in #18107

`UniqueViolation: duplicate key value violates unique constraint
"state_groups_persisting_pkey"`
This commit is contained in:
Erik Johnston 2025-02-05 17:26:07 +01:00 committed by GitHub
parent 37e893499f
commit 3391da348f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 2 deletions

1
changelog.d/18137.bugfix Normal file
View file

@ -0,0 +1 @@
Fix regression where persisting events in some rooms could fail after a previous unclean shutdown. Introduced in v1.124.0rc1.

View file

@ -95,8 +95,18 @@ class StateDeletionDataStore:
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]