synapse/tests
Quentin Gliech 5ea2cf2484
Move device changes off the main process (#18581)
The main goal of this PR is to handle device list changes onto multiple
writers, off the main process, so that we can have logins happening
whilst Synapse is rolling-restarting.

This is quite an intrusive change, so I would advise to review this
commit by commit; I tried to keep the history as clean as possible.

There are a few things to consider:

- the `device_list_key` in stream tokens becomes a
`MultiWriterStreamToken`, which has a few implications in sync and on
the storage layer
- we had a split between `DeviceHandler` and `DeviceWorkerHandler` for
master vs. worker process. I've kept this split, but making it rather
writer vs. non-writer worker, using method overrides for doing
replication calls when needed
- there are a few operations that need to happen on a single worker at a
time. Instead of using cross-worker locks, for now I made them run on
the first writer on the list

---------

Co-authored-by: Eric Eastwood <erice@element.io>
2025-07-18 09:06:14 +02:00
..
api Refactor cache metrics to be homeserver-scoped (#18604) 2025-07-16 16:04:57 -05:00
app Correctly mention previous copyright (#16820) 2024-01-23 11:26:48 +00:00
appservice Refactor cache metrics to be homeserver-scoped (#18604) 2025-07-16 16:04:57 -05:00
config Refactor cache metrics to be homeserver-scoped (#18604) 2025-07-16 16:04:57 -05:00
crypto Stop sending or processing the origin field in PDUs (#18418) 2025-07-01 12:04:23 +01:00
events Allow admins to see soft failed events (if they want to) (#18238) 2025-07-14 16:55:19 +01:00
federation Move device changes off the main process (#18581) 2025-07-18 09:06:14 +02:00
handlers Move device changes off the main process (#18581) 2025-07-18 09:06:14 +02:00
http Refactor cache metrics to be homeserver-scoped (#18604) 2025-07-16 16:04:57 -05:00
logging Unbreak unit tests with Twisted 25.5.0 by add parsePOSTFormSubmission arg to FakeSite (#18577) 2025-06-24 11:52:06 +01:00
media Add ability to limit amount uploaded by a user (#18527) 2025-07-10 13:39:09 +01:00
metrics Clean up MetricsResource and Prometheus hacks (#18687) 2025-07-17 11:57:19 -05:00
module_api Move device changes off the main process (#18581) 2025-07-18 09:06:14 +02:00
push Refactor cache metrics to be homeserver-scoped (#18604) 2025-07-16 16:04:57 -05:00
replication Refactor cache metrics to be homeserver-scoped (#18604) 2025-07-16 16:04:57 -05:00
rest Move device changes off the main process (#18581) 2025-07-18 09:06:14 +02:00
scripts Update license headers 2023-11-21 15:29:58 -05:00
server_notices Sliding Sync: Add cache to get_tags_for_room(...) (#17730) 2024-09-19 12:43:26 +01:00
state bugfix: calculate the PL for non-creators correctly in v11 rooms (#18547) 2025-06-13 12:56:39 +01:00
storage Clean up MetricsResource and Prometheus hacks (#18687) 2025-07-17 11:57:19 -05:00
test_utils Bump ruff from 0.7.3 to 0.11.10 (#18451) 2025-05-20 15:23:30 +01:00
types Use immutabledict instead of frozendict (#15113) 2023-03-22 17:15:34 +00:00
util Refactor cache metrics to be homeserver-scoped (#18604) 2025-07-16 16:04:57 -05:00
__init__.py Correctly mention previous copyright (#16820) 2024-01-23 11:26:48 +00:00
server.py Unbreak unit tests with Twisted 25.5.0 by add parsePOSTFormSubmission arg to FakeSite (#18577) 2025-06-24 11:52:06 +01:00
test_distributor.py Correctly mention previous copyright (#16820) 2024-01-23 11:26:48 +00:00
test_event_auth.py Format files with Ruff (#17643) 2024-09-02 12:39:04 +01:00
test_mau.py Refactor cache metrics to be homeserver-scoped (#18604) 2025-07-16 16:04:57 -05:00
test_phone_home.py Correctly mention previous copyright (#16820) 2024-01-23 11:26:48 +00:00
test_rust.py Add missing type hints to tests. (#15027) 2023-02-08 19:52:37 +00:00
test_server.py Fix backwards compat for DirectServeJsonResource (#18600) 2025-06-26 14:05:48 +00:00
test_state.py Bump ruff from 0.7.3 to 0.11.10 (#18451) 2025-05-20 15:23:30 +01:00
test_terms_auth.py Update license headers 2023-11-21 15:29:58 -05:00
test_test_utils.py Correctly mention previous copyright (#16820) 2024-01-23 11:26:48 +00:00
test_types.py Format files with Ruff (#17643) 2024-09-02 12:39:04 +01:00
test_visibility.py Include user membership on events (#17282) 2024-06-13 21:45:54 +00:00
unittest.py Cleanup Python 3.8 leftovers (#17967) 2025-02-10 16:53:24 +00:00
utils.py Cleanup Python 3.8 leftovers (#17967) 2025-02-10 16:53:24 +00:00