summary refs log tree commit diff
path: root/changelog.d
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2022-05-03 11:47:21 +0100
committerGitHub <noreply@github.com>2022-05-03 11:47:21 +0100
commitae7858f184f4fd1533d0a5dd70174e3c70f529ad (patch)
tree2227320390fb7919e2f2f141c952099fa67066cd /changelog.d
parentPrune mypy ignore_missing_imports list (#12608) (diff)
downloadsynapse-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')
-rw-r--r--changelog.d/12594.bugfix1
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.