synapse-product/synapse/storage/databases/main
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
..
__init__.py Add some type hints to datastore (#12485) 2022-04-27 13:05:00 +01:00
account_data.py Use the ignored_users table to test event visibility & sync. (#12225) 2022-03-15 14:06:05 -04:00
appservice.py Add some type hints to datastore (#12485) 2022-04-27 13:05:00 +01:00
cache.py Add cache for get_membership_from_event_ids (#12272) 2022-03-25 14:58:56 +00:00
censor_events.py Type hint the constructors of the data store classes (#11555) 2021-12-13 17:05:00 +00:00
client_ips.py Optimise _update_client_ips_batch_txn to batch together database operations. (#12252) 2022-04-08 15:29:13 +01:00
deviceinbox.py Add some type hints to datastore (#12485) 2022-04-27 13:05:00 +01:00
devices.py Add some type hints to datastore (#12485) 2022-04-27 13:05:00 +01:00
directory.py Replace uses of simple_insert_many with simple_insert_many_values. (#11742) 2022-01-13 19:44:18 -05:00
e2e_room_keys.py Replace uses of simple_insert_many with simple_insert_many_values. (#11742) 2022-01-13 19:44:18 -05:00
end_to_end_keys.py Add support for MSC3202: sending one-time key counts and fallback key usage states to Application Services. (#11617) 2022-02-24 17:55:45 +00:00
event_federation.py Optimise backfill calculation (#12522) 2022-04-26 10:27:11 +01:00
event_push_actions.py Replace uses of simple_insert_many with simple_insert_many_values. (#11742) 2022-01-13 19:44:18 -05:00
events_bg_updates.py Replace uses of simple_insert_many with simple_insert_many_values. (#11742) 2022-01-13 19:44:18 -05:00
events_forward_extremities.py Fix returned count of delete extremities admin API (#12496) 2022-04-19 16:49:45 +01:00
events_worker.py Handle cancellation in EventsWorkerStore._get_events_from_cache_or_db (#12529) 2022-04-25 19:39:17 +01:00
events.py Fix race when persisting an event and deleting a room (#12594) 2022-05-03 11:47:21 +01:00
filtering.py Improve type hints in storage classes. (#11652) 2021-12-29 13:04:28 +00:00
group_server.py Add some type hints to datastore (#12485) 2022-04-27 13:05:00 +01:00
keys.py Add some type hints to datastore (#12485) 2022-04-27 13:05:00 +01:00
lock.py Type hint the constructors of the data store classes (#11555) 2021-12-13 17:05:00 +00:00
media_repository.py Add some type hints to datastore (#12485) 2022-04-27 13:05:00 +01:00
metrics.py Remove redundant COALESCE()s around COUNT()s in database queries (#11570) 2021-12-14 12:34:30 +00:00
monthly_active_users.py Remove unused # type: ignores (#12531) 2022-04-27 14:03:44 +01:00
openid.py Add type hints to some storage classes (#11307) 2021-11-11 08:47:31 -05:00
presence.py Add some type hints to datastore (#12485) 2022-04-27 13:05:00 +01:00
profile.py Database storage profile passes mypy (#11342) 2021-11-15 12:59:33 +00:00
purge_events.py Fix race when persisting an event and deleting a room (#12594) 2022-05-03 11:47:21 +01:00
push_rule.py Add a module API to allow modules to edit push rule actions (#12406) 2022-04-27 13:55:33 +00:00
pusher.py Add some type hints to datastore (#12485) 2022-04-27 13:05:00 +01:00
receipts.py Improve the docstrings for the receipts store. (#12581) 2022-04-28 17:58:58 +00:00
registration.py Add some type hints to datastore (#12423) 2022-04-12 11:54:00 +01:00
rejections.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
relations.py Remove references to unstable identifiers from MSC3440. (#12382) 2022-04-12 08:42:03 -04:00
room_batch.py Correct type hint for room_batch.py (#11310) 2021-11-11 16:49:28 +00:00
room.py Resync state after partial-state join (#12394) 2022-04-12 13:23:43 +00:00
roommember.py Refactor and convert Linearizer to async (#12357) 2022-04-05 15:43:52 +01:00
search.py Add some type hints to datastore. (#12255) 2022-03-28 14:11:14 -04:00
session.py Run pyupgrade --py37-plus --keep-percent-format on Synapse (#11685) 2022-01-05 09:53:05 -08:00
signatures.py Add some type hints to datastore (#12423) 2022-04-12 11:54:00 +01:00
state_deltas.py Improve log messages for stream ids (#11536) 2021-12-08 14:15:14 +00:00
state.py Consistently use collections.abc.Mapping to check frozendict. (#12564) 2022-04-27 09:00:07 -04:00
stats.py Add some type hints to datastore. (#12255) 2022-03-28 14:11:14 -04:00
stream.py Fix missing sync events during historical batch imports (#12319) 2022-04-13 11:38:35 +01:00
tags.py Add some type hints to datastore (#12423) 2022-04-12 11:54:00 +01:00
transactions.py Add admin API to get a list of federated rooms (#11658) 2022-01-25 16:11:40 +00:00
ui_auth.py Add some type hints to datastore (#12485) 2022-04-27 13:05:00 +01:00
user_directory.py Add some type hints to datastore. (#12255) 2022-03-28 14:11:14 -04:00
user_erasure_store.py Annotations for user_erasure_store (#11313) 2021-11-11 19:22:19 +00:00