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:
parent
37e893499f
commit
3391da348f
2 changed files with 13 additions and 2 deletions
1
changelog.d/18137.bugfix
Normal file
1
changelog.d/18137.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix regression where persisting events in some rooms could fail after a previous unclean shutdown. Introduced in v1.124.0rc1.
|
|
@ -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]
|
||||
|
|
Loading…
Add table
Reference in a new issue