synapse-product/synapse
Erik Johnston ae7858f184
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`....
2022-05-03 11:47:21 +01:00
..
_scripts Add missing type hints to config classes. (#12402) 2022-04-11 12:07:23 -04:00
api Implement MSC2815: allow room moderators to view redacted event content (#12427) 2022-04-20 12:57:39 +01:00
app Remove unused # type: ignores (#12531) 2022-04-27 14:03:44 +01:00
appservice MSC3202: Fix device_unused_fallback_keys -> device_unused_fallback_key_types (#12520) 2022-04-22 16:03:46 +01:00
config Remove special-case for twisted logger (#12589) 2022-04-29 22:05:18 +01:00
crypto Bump black and click versions (#12320) 2022-04-05 11:04:28 +01:00
events Consistently use collections.abc.Mapping to check frozendict. (#12564) 2022-04-27 09:00:07 -04:00
federation Remove unused # type: ignores (#12531) 2022-04-27 14:03:44 +01:00
groups Remove HomeServer.get_datastore() (#12031) 2022-02-23 11:04:02 +00:00
handlers Add a module API to allow modules to edit push rule actions (#12406) 2022-04-27 13:55:33 +00:00
http Fix logging of incorrect status codes for disconnected requests (#12580) 2022-04-28 15:49:50 +00:00
logging Prefer make_awaitable over defer.succeed in tests (#12505) 2022-04-27 14:58:26 +01:00
metrics Update type annotations for compatiblity with prometheus_client 0.14 (#12389) 2022-04-06 12:59:04 +00:00
module_api Add a module API to allow modules to edit push rule actions (#12406) 2022-04-27 13:55:33 +00:00
push Refactor and convert Linearizer to async (#12357) 2022-04-05 15:43:52 +01:00
replication Add opentracing spans to calls to external cache (#12380) 2022-04-07 13:18:29 +01:00
res Fix Jinja templating error when generating thumbnail URLs. (#12510) 2022-04-20 12:03:03 -04:00
rest Add a module API to allow modules to edit push rule actions (#12406) 2022-04-27 13:55:33 +00:00
server_notices Update the server notices user profile in room if changed. (#12115) 2022-04-08 07:51:27 -04:00
spam_checker_api Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
state Refactor and convert Linearizer to async (#12357) 2022-04-05 15:43:52 +01:00
static Display an error page during failure of fallback UIA. (#10561) 2021-08-18 08:13:35 -04:00
storage Fix race when persisting an event and deleting a room (#12594) 2022-05-03 11:47:21 +01:00
streams Generate historic pagination token for /messages when no ?from token provided (#12370) 2022-04-06 11:40:28 +01:00
util Remove unused # type: ignores (#12531) 2022-04-27 14:03:44 +01:00
__init__.py Dump setuptools; correct pyproject version number (#12478) 2022-04-20 17:33:20 +01:00
event_auth.py Remove excess condition on knock->leave check (#11900) 2022-02-22 18:35:01 +00:00
notifier.py Remove HomeServer.get_datastore() (#12031) 2022-02-23 11:04:02 +00:00
py.typed Mark Module API error imports as re-exported and mark Synapse as containing type annotations (#11054) 2021-10-13 08:42:41 +01:00
server.py Add a module API to allow modules to edit push rule actions (#12406) 2022-04-27 13:55:33 +00:00
types.py Make StreamToken and RoomStreamToken methods propagate cancellations (#12366) 2022-04-05 16:56:52 +01:00
visibility.py Optimise backfill calculation (#12522) 2022-04-26 10:27:11 +01:00