diff options
author | Erik Johnston <erik@matrix.org> | 2022-05-03 11:47:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-03 11:47:21 +0100 |
commit | ae7858f184f4fd1533d0a5dd70174e3c70f529ad (patch) | |
tree | 2227320390fb7919e2f2f141c952099fa67066cd /changelog.d/12594.bugfix | |
parent | Prune mypy ignore_missing_imports list (#12608) (diff) | |
download | synapse-ae7858f184f4fd1533d0a5dd70174e3c70f529ad.tar.xz |
Fix race when persisting an event and deleting a room (#12594)
This works by taking a row level lock on the `rooms` table at the start of both transactions, ensuring that they don't run at the same time. In the event persistence transaction we also check that there is an entry still in the `rooms` table. I can't figure out how to do this in SQLite. I was just going to lock the table, but it seems that we don't support that in SQLite either, so I'm *really* confused as to how we maintain integrity in SQLite when using `lock_table`....
Diffstat (limited to 'changelog.d/12594.bugfix')
-rw-r--r-- | changelog.d/12594.bugfix | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/changelog.d/12594.bugfix b/changelog.d/12594.bugfix new file mode 100644 index 0000000000..7411d9c079 --- /dev/null +++ b/changelog.d/12594.bugfix @@ -0,0 +1 @@ +Fix race when persisting an event and deleting a room that could lead to outbound federation breaking. |