synapse/tests
Erik Johnston f112cfe5bb
Fix MultiWriteIdGenerator's handling of restarts. (#8374)
On startup `MultiWriteIdGenerator` fetches the maximum stream ID for
each instance from the table and uses that as its initial "current
position" for each writer. This is problematic as a) it involves either
a scan of events table or an index (neither of which is ideal), and b)
if rows are being persisted out of order elsewhere while the process
restarts then using the maximum stream ID is not correct. This could
theoretically lead to race conditions where e.g. events that are
persisted out of order are not sent down sync streams.

We fix this by creating a new table that tracks the current positions of
each writer to the stream, and update it each time we finish persisting
a new entry. This is a relatively small overhead when persisting events.
However for the cache invalidation stream this is a much bigger relative
overhead, so instead we note that for invalidation we don't actually
care about reliability over restarts (as there's no caches to
invalidate) and simply don't bother reading and writing to the new table
in that particular case.
2020-09-24 16:53:51 +01:00
..
api Stop sub-classing object (#8249) 2020-09-04 06:54:56 -04:00
app Create a ListenerConfig object (#7681) 2020-06-16 12:44:07 +01:00
appservice Convert appservice to async. (#7973) 2020-07-30 07:27:39 -04:00
config Use the default templates when a custom template file cannot be found (#8037) 2020-08-17 17:05:00 +01:00
crypto Stop sub-classing object (#8249) 2020-09-04 06:54:56 -04:00
events Convert the message handler to async/await. (#7884) 2020-07-22 12:29:15 -04:00
federation Catch-up after Federation Outage (bonus): Catch-up on Synapse Startup (#8322) 2020-09-18 14:59:13 +01:00
handlers Create function to check for long names in devices (#8364) 2020-09-22 11:42:55 +01:00
http Synapse 1.20.0rc3 (2020-09-11) 2020-09-11 08:30:36 -04:00
logging Stop sub-classing object (#8249) 2020-09-04 06:54:56 -04:00
module_api Convert simple_select_one and simple_select_one_onecol to async (#8162) 2020-08-26 07:19:32 -04:00
push Stop sub-classing object (#8249) 2020-09-04 06:54:56 -04:00
replication Add EventStreamPosition type (#8388) 2020-09-24 13:24:17 +01:00
rest Fixed a bug with reactivating users with the admin API (#8362) 2020-09-22 18:19:01 +01:00
scripts Port register_new_matrix_user to Python 3 and add tests (#4085) 2018-10-26 22:05:22 +11:00
server_notices Allow for make_awaitable's return value to be re-used. (#8261) 2020-09-08 07:26:55 -04:00
state Stop sub-classing object (#8249) 2020-09-04 06:54:56 -04:00
storage Fix MultiWriteIdGenerator's handling of restarts. (#8374) 2020-09-24 16:53:51 +01:00
test_utils Update test logging to be able to accept braces (#8335) 2020-09-18 07:56:40 -04:00
util Stop sub-classing object (#8249) 2020-09-04 06:54:56 -04:00
__init__.py Move patch_inline_callbacks into synapse/ 2019-10-10 10:53:06 +01:00
server.py Simplify super() calls to Python 3 syntax. (#8344) 2020-09-18 09:56:44 -04:00
test_distributor.py Run black. 2018-08-10 23:54:09 +10:00
test_event_auth.py Implement room version 6 (MSC2240). (#7506) 2020-05-15 09:30:10 -04:00
test_federation.py Convert simple_update* and simple_select* to async (#8173) 2020-08-27 07:08:38 -04:00
test_mau.py Fix some spelling mistakes / typos. (#7811) 2020-07-09 09:52:58 -04:00
test_metrics.py Allow configuration of Synapse's cache without using synctl or environment variables (#6391) 2020-05-11 18:45:23 +01:00
test_phone_home.py Remove the psutil dependency (#6318) 2019-11-05 05:05:48 +11:00
test_preview.py Run Black. (#5482) 2019-06-20 19:32:02 +10:00
test_server.py Iteratively encode JSON responses to avoid blocking the reactor. (#8013) 2020-08-18 08:49:59 -04:00
test_state.py Simplify super() calls to Python 3 syntax. (#8344) 2020-09-18 09:56:44 -04:00
test_terms_auth.py Replace all remaining six usage with native Python 3 equivalents (#7704) 2020-06-16 08:51:47 -04:00
test_test_utils.py Run black. 2018-08-10 23:54:09 +10:00
test_types.py Validate the alt_aliases property of canonical alias events (#6971) 2020-03-03 07:12:45 -05:00
test_visibility.py Stop sub-classing object (#8249) 2020-09-04 06:54:56 -04:00
unittest.py Simplify super() calls to Python 3 syntax. (#8344) 2020-09-18 09:56:44 -04:00
utils.py Stop sub-classing object (#8249) 2020-09-04 06:54:56 -04:00