synapse-product/synapse/storage/databases/main
Andrew Morgan d963c69ba5
Speed up remote invite rejection database call (#8815)
This is another PR that grew out of #6739.

The existing code for checking whether a user is currently invited to a room when they want to leave the room looks like the following:

f737368a26/synapse/handlers/room_member.py (L518-L540)

It calls `get_invite_for_local_user_in_room`, which will actually query *all* rooms the user has been invited to, before iterating over them and matching via the room ID. It will then return a tuple of a lot of information which we pull the event ID out of.

I need to do a similar check for knocking, but this code wasn't very efficient. I then tried to write a different implementation using `StateHandler.get_current_state` but this actually didn't work as we haven't *joined* the room yet - we've only been invited to it. That means that only certain tables in Synapse have our desired `invite` membership state. One of those tables is `local_current_membership`.

So I wrote a store method that just queries that table instead
2020-11-25 20:06:13 +00:00
..
schema Improve start time by adding index to e2e_cross_signing_keys (#8694) 2020-11-02 13:55:56 +00:00
__init__.py Type hints for RegistrationStore (#8615) 2020-10-22 11:56:58 +01:00
account_data.py Do not assume that account data is of the correct form. (#8454) 2020-10-05 09:28:05 -04:00
appservice.py Fix error handling around when completing an AS transaction (#8693) 2020-10-30 16:50:48 +00:00
cache.py Separate get_current_token into two. (#8113) 2020-08-19 10:39:31 +01:00
censor_events.py Remove frozendict_json_encoder and support frozendicts everywhere 2020-10-28 15:56:57 +00:00
client_ips.py Replace DeferredCache with LruCache where possible (#8563) 2020-10-19 12:20:29 +01:00
deviceinbox.py Use async with for ID gens (#8383) 2020-09-23 16:11:18 +01:00
devices.py Replace DeferredCache with LruCache where possible (#8563) 2020-10-19 12:20:29 +01:00
directory.py Convert additional databases to async/await part 2 (#8200) 2020-09-01 08:39:04 -04:00
e2e_room_keys.py Convert additional database code to async/await. (#8195) 2020-08-28 07:54:27 -04:00
end_to_end_keys.py Improve start time by adding index to e2e_cross_signing_keys (#8694) 2020-11-02 13:55:56 +00:00
event_federation.py Cache event ID to auth event IDs lookups (#8752) 2020-11-13 11:29:18 +00:00
event_push_actions.py Move additional tasks to the background worker, part 3 (#8489) 2020-10-09 07:37:51 -04:00
events_bg_updates.py Add admin API to list users' local media (#8647) 2020-10-27 14:12:31 +00:00
events_worker.py Fix optional parameter in stripped state storage method (#8688) 2020-10-30 00:22:31 +00:00
events.py Remove frozendict_json_encoder and support frozendicts everywhere 2020-10-28 15:56:57 +00:00
filtering.py Convert additional databases to async/await part 2 (#8200) 2020-09-01 08:39:04 -04:00
group_server.py Use async with for ID gens (#8383) 2020-09-23 16:11:18 +01:00
keys.py Use autocommit mode for single statement DB functions. (#8542) 2020-10-14 15:50:59 +01:00
media_repository.py Fix race for concurrent downloads of remote media. (#8682) 2020-10-30 10:55:24 +00:00
metrics.py Fix user_daily_visits to not have duplicate rows for UA. (#8654) 2020-10-26 13:16:32 +00:00
monthly_active_users.py Move additional tasks to the background worker, part 3 (#8489) 2020-10-09 07:37:51 -04:00
openid.py Convert additional databases to async/await part 2 (#8200) 2020-09-01 08:39:04 -04:00
presence.py Use async with for ID gens (#8383) 2020-09-23 16:11:18 +01:00
profile.py Add type hints for account validity handler (#8620) 2020-10-26 14:17:31 -04:00
purge_events.py Make token serializing/deserializing async (#8427) 2020-09-30 20:29:19 +01:00
push_rule.py Use async with for ID gens (#8383) 2020-09-23 16:11:18 +01:00
pusher.py Add DeferredCache.get_immediate method (#8568) 2020-10-19 15:00:12 +01:00
receipts.py Improve appservice handler to send only the most recent read receipts when no stream_id is stored. (#8744) 2020-11-18 18:54:09 +00:00
registration.py Add admin API for logging in as a user (#8617) 2020-11-17 10:51:25 +00:00
rejections.py Convert simple_select_one and simple_select_one_onecol to async (#8162) 2020-08-26 07:19:32 -04:00
relations.py Convert additional databases to async/await (#8199) 2020-09-01 09:21:48 -04:00
room.py Generalise _maybe_store_room_on_invite (#8754) 2020-11-13 16:24:04 +00:00
roommember.py Speed up remote invite rejection database call (#8815) 2020-11-25 20:06:13 +00:00
search.py Simplify super() calls to Python 3 syntax. (#8344) 2020-09-18 09:56:44 -04:00
signatures.py Convert additional databases to async/await part 2 (#8200) 2020-09-01 08:39:04 -04:00
state_deltas.py Convert state and stream stores and related code to async (#8194) 2020-08-28 09:37:55 -04:00
state.py Simplify super() calls to Python 3 syntax. (#8344) 2020-09-18 09:56:44 -04:00
stats.py Add an admin API for users' media statistics (#8700) 2020-11-05 18:59:12 +00:00
stream.py Use vector clocks for room stream tokens. (#8439) 2020-10-07 15:15:33 +01:00
tags.py Use async with for ID gens (#8383) 2020-09-23 16:11:18 +01:00
transactions.py Use autocommit mode for single statement DB functions. (#8542) 2020-10-14 15:50:59 +01:00
ui_auth.py Allow background tasks to be run on a separate worker. (#8369) 2020-10-02 08:23:15 -04:00
user_directory.py Use autocommit mode for single statement DB functions. (#8542) 2020-10-14 15:50:59 +01:00
user_erasure_store.py Fixed a bug with reactivating users with the admin API (#8362) 2020-09-22 18:19:01 +01:00