MatrixSynapse/tests
Erik Johnston 5c9e39e619
Track device list updates per room. (#12321)
This is a first step in dealing with #7721.

The idea is basically that rather than calculating the full set of users a device list update needs to be sent to up front, we instead simply record the rooms the user was in at the time of the change. This will allow a few things:

1. we can defer calculating the set of remote servers that need to be poked about the change; and
2. during `/sync` and `/keys/changes` we can avoid also avoid calculating users who share rooms with other users, and instead just look at the rooms that have changed.

However, care needs to be taken to correctly handle server downgrades. As such this PR writes to both `device_lists_changes_in_room` and the `device_lists_outbound_pokes` table synchronously. In a future release we can then bump the database schema compat version to `69` and then we can assume that the new `device_lists_changes_in_room` exists and is handled.

There is a temporary option to disable writing to `device_lists_outbound_pokes` synchronously, allowing us to test the new code path does work (and by implication upgrading to a future release and downgrading to this one will work correctly).

Note: Ideally we'd do the calculation of room to servers on a worker (e.g. the background worker), but currently only master can write to the `device_list_outbound_pokes` table.
2022-04-04 15:25:20 +01:00
..
api Fix `PushRuleEvaluator` and `Filter` to work on frozendicts (#12100) 2022-02-28 17:40:24 +00:00
app Remove `HomeServer.get_datastore()` (#12031) 2022-02-23 11:04:02 +00:00
appservice Send device list updates to application services (MSC3202) - part 1 (#11881) 2022-03-30 14:39:27 +01:00
config Add restrictions by default to open registration in Synapse (#12091) 2022-03-25 10:11:01 -07:00
crypto Fix typechecker problems exposed by signedjson 1.1.2 (#12326) 2022-03-29 21:37:50 +00:00
events Use the proper serialization format when bundling aggregations. (#12090) 2022-03-03 10:43:06 -05:00
federation Track device list updates per room. (#12321) 2022-04-04 15:25:20 +01:00
handlers Add type hints for `tests/unittest.py`. (#12347) 2022-04-01 16:04:16 +00:00
http Replace assertEquals and friends with non-deprecated versions. (#12092) 2022-02-28 07:12:29 -05:00
logging Fixes for opentracing scopes (#11869) 2022-02-02 22:41:57 +00:00
module_api Remove redundant `get_success` calls in test code (#12346) 2022-04-01 16:10:31 +01:00
push Add type hints to tests files. (#12256) 2022-03-21 09:43:16 -04:00
replication Remove redundant `get_success` calls in test code (#12346) 2022-04-01 16:10:31 +01:00
rest Add type hints for `tests/unittest.py`. (#12347) 2022-04-01 16:04:16 +00:00
scripts Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
server_notices Remove `HomeServer.get_datastore()` (#12031) 2022-02-23 11:04:02 +00:00
state Update the MSC3083 support to verify if joins are from an authorized server. (#10254) 2021-07-26 12:17:00 -04:00
storage Track device list updates per room. (#12321) 2022-04-04 15:25:20 +01:00
test_utils Remove `HomeServer.get_datastore()` (#12031) 2022-02-23 11:04:02 +00:00
util Try to detect borked package installations. (#12244) 2022-03-18 19:03:46 +00:00
__init__.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
server.py Add type hints for `tests/unittest.py`. (#12347) 2022-04-01 16:04:16 +00:00
test_distributor.py Replace assertEquals and friends with non-deprecated versions. (#12092) 2022-02-28 07:12:29 -05:00
test_event_auth.py Check *all* auth events for room id and rejection (#11009) 2021-10-18 18:28:30 +01:00
test_federation.py Remove `HomeServer.get_datastore()` (#12031) 2022-02-23 11:04:02 +00:00
test_mau.py Remove `HomeServer.get_datastore()` (#12031) 2022-02-23 11:04:02 +00:00
test_metrics.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
test_phone_home.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
test_server.py Add reactor to `SynapseRequest` and fix up types. (#10868) 2021-09-24 11:01:25 +01:00
test_state.py Faster joins: persist to database (#12012) 2022-03-01 12:49:54 +00:00
test_terms_auth.py Replace assertEquals and friends with non-deprecated versions. (#12092) 2022-02-28 07:12:29 -05:00
test_test_utils.py Replace assertEquals and friends with non-deprecated versions. (#12092) 2022-02-28 07:12:29 -05:00
test_types.py Replace assertEquals and friends with non-deprecated versions. (#12092) 2022-02-28 07:12:29 -05:00
test_visibility.py Remove redundant `get_success` calls in test code (#12346) 2022-04-01 16:10:31 +01:00
unittest.py Add type hints for `tests/unittest.py`. (#12347) 2022-04-01 16:04:16 +00:00
utils.py Remove unused test code. (#12291) 2022-03-24 19:25:52 +00:00