MatrixSynapse/synapse/handlers
Sean Quah 84169a82dc
Avoid blocking lazy-loading `/sync`s during partial joins (#13477)
Use a state filter or accept partial state in a few places where we
request state, to avoid blocking.

To make lazy-loading `/sync`s work, we need to provide the memberships
of event senders, which are not guaranteed to be in the room state.
Instead we dig through auth events for memberships to present to
clients. The auth events of an event are guaranteed to contain a
passable membership event, otherwise the event would have been rejected.

Note that this only covers the common code paths encountered during
testing. There has been no exhaustive checking of all sync code paths.

Fixes #13146.

Signed-off-by: Sean Quah <seanq@matrix.org>
2022-08-18 11:53:02 +01:00
..
ui_auth Revert "Drop support for delegating email validation (#13192)" (#13406) 2022-07-29 10:29:23 +00:00
__init__.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
account.py Optionally include account validity in MSC3720 account status responses (#12266) 2022-03-24 11:19:41 +01:00
account_data.py Add `StreamKeyType` class and replace string literals with constants (#12567) 2022-05-16 15:35:31 +00:00
account_validity.py Implement cancellation support/protection for module callbacks (#12568) 2022-05-09 12:31:14 +01:00
admin.py Rename storage classes (#12913) 2022-05-31 12:17:50 +00:00
appservice.py Federation Sender & Appservice Pusher Stream Optimisations (#13251) 2022-07-15 09:36:56 +01:00
auth.py Implement MSC3848: Introduce errcodes for specific event sending failures (#13343) 2022-07-27 13:44:40 +01:00
cas.py Remove `HomeServer.get_datastore()` (#12031) 2022-02-23 11:04:02 +00:00
deactivate_account.py Add third_party module callbacks to check if a user can delete a room and deactivate a user (#12028) 2022-03-09 18:23:57 +00:00
device.py Add missing types to opentracing. (#13345) 2022-07-21 12:01:52 +00:00
devicemessage.py Additional constants for EDU types. (#12884) 2022-05-27 07:14:36 -04:00
directory.py Uniformize spam-checker API, part 5: expand other spam-checker callbacks to return `Tuple[Codes, dict]` (#13044) 2022-07-11 16:52:10 +00:00
e2e_keys.py Add missing types to opentracing. (#13345) 2022-07-21 12:01:52 +00:00
e2e_room_keys.py Add missing types to opentracing. (#13345) 2022-07-21 12:01:52 +00:00
event_auth.py Move some event auth checks out to a different method (#13065) 2022-06-15 19:48:22 +01:00
events.py Rename storage classes (#12913) 2022-05-31 12:17:50 +00:00
federation.py Time how long it takes us to do backfill processing (#13535) 2022-08-17 10:33:19 +01:00
federation_event.py Time how long it takes us to do backfill processing (#13535) 2022-08-17 10:33:19 +01:00
identity.py Revert "Drop support for delegating email validation (#13192)" (#13406) 2022-07-29 10:29:23 +00:00
initial_sync.py Support stable identifiers for MSC2285: private read receipts. (#13273) 2022-08-05 11:09:33 -04:00
message.py Faster room joins: make `/joined_members` block whilst the room is partial stated. (#13514) 2022-08-16 13:16:56 +01:00
oidc.py Move the "email unsubscribe" resource, refactor the macaroon generator & simplify the access token verification logic. (#12986) 2022-06-14 09:12:08 -04:00
pagination.py Instrument `/messages` for understandable traces in Jaeger (#13368) 2022-08-03 10:57:38 -05:00
password_policy.py Use direct references for some configuration variables (part 3) (#10885) 2021-09-23 07:13:34 -04:00
presence.py Refactor presence so we can prune user in room caches (#13313) 2022-07-25 09:21:06 +00:00
profile.py Use a single query in `ProfileHandler.get_profile` (#13209) 2022-07-07 11:02:09 +00:00
push_rules.py Add a module API to allow modules to edit push rule actions (#12406) 2022-04-27 13:55:33 +00:00
read_marker.py Refactor and convert `Linearizer` to async (#12357) 2022-04-05 15:43:52 +01:00
receipts.py Support stable identifiers for MSC2285: private read receipts. (#13273) 2022-08-05 11:09:33 -04:00
register.py Decouple `synapse.api.auth_blocking.AuthBlocking` from `synapse.api.auth.Auth`. (#13021) 2022-06-14 09:51:15 +01:00
relations.py Instrument `/messages` for understandable traces in Jaeger (#13368) 2022-08-03 10:57:38 -05:00
room.py Backfill remote event fetched by MSC3030 so we can paginate from it later (#13205) 2022-07-22 16:00:11 -05:00
room_batch.py Rename storage classes (#12913) 2022-05-31 12:17:50 +00:00
room_list.py Use stable prefixes for MSC3827: filtering of `/publicRooms` by room type (#13370) 2022-07-27 19:46:57 +01:00
room_member.py Add some tracing spans to give insight into local joins (#13439) 2022-08-03 10:19:34 -07:00
room_member_worker.py Implement knock feature (#6739) 2021-06-09 19:39:51 +01:00
room_summary.py Revert 'Remove the unspecced field in the response. (#13365)' to give more time for clients to update. (#13501) 2022-08-11 10:27:48 +00:00
saml.py Remove `HomeServer.get_datastore()` (#12031) 2022-02-23 11:04:02 +00:00
search.py Reduce the amount of state we pull from the DB (#12811) 2022-06-06 09:24:12 +01:00
send_email.py Support Implicit TLS for sending emails (#13317) 2022-07-25 16:27:19 +01:00
set_password.py Remove `HomeServer.get_datastore()` (#12031) 2022-02-23 11:04:02 +00:00
sso.py Use `getClientAddress` instead of `getClientIP`. (#12599) 2022-05-04 14:11:21 -04:00
state_deltas.py Remove `HomeServer.get_datastore()` (#12031) 2022-02-23 11:04:02 +00:00
stats.py Implement MSC3827: Filtering of `/publicRooms` by room type (#13031) 2022-06-29 17:12:45 +00:00
sync.py Avoid blocking lazy-loading `/sync`s during partial joins (#13477) 2022-08-18 11:53:02 +01:00
typing.py Copy room serials before handling in `get_new_events_as` (#13392) 2022-07-26 17:45:27 +00:00
user_directory.py Wait for lazy join to complete when getting current state (#12872) 2022-06-01 16:02:53 +01:00