diff options
author | Erik Johnston <erik@matrix.org> | 2021-06-21 14:38:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-21 14:38:59 +0100 |
commit | a5cd05beeeac80df0352bd50c2ad2e017664665c (patch) | |
tree | 582741c4805d25a8869d1dbba82f80fe58b7fc14 /synapse/storage | |
parent | Check third party rules before persisting knocks over federation (#10212) (diff) | |
download | synapse-a5cd05beeeac80df0352bd50c2ad2e017664665c.tar.xz |
Fix performance of responding to user key requests over federation (#10221)
We were repeatedly looking up a config option in a loop (using the unclassed config style), which is expensive enough that it can cause large CPU usage.
Diffstat (limited to 'synapse/storage')
-rw-r--r-- | synapse/storage/databases/main/end_to_end_keys.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/synapse/storage/databases/main/end_to_end_keys.py b/synapse/storage/databases/main/end_to_end_keys.py index 9ba5778a88..0e3dd4e9ca 100644 --- a/synapse/storage/databases/main/end_to_end_keys.py +++ b/synapse/storage/databases/main/end_to_end_keys.py @@ -62,6 +62,13 @@ class EndToEndKeyBackgroundStore(SQLBaseStore): class EndToEndKeyWorkerStore(EndToEndKeyBackgroundStore): + def __init__(self, database: DatabasePool, db_conn: Connection, hs: "HomeServer"): + super().__init__(database, db_conn, hs) + + self._allow_device_name_lookup_over_federation = ( + self.hs.config.federation.allow_device_name_lookup_over_federation + ) + async def get_e2e_device_keys_for_federation_query( self, user_id: str ) -> Tuple[int, List[JsonDict]]: @@ -85,7 +92,7 @@ class EndToEndKeyWorkerStore(EndToEndKeyBackgroundStore): result["keys"] = keys device_display_name = None - if self.hs.config.allow_device_name_lookup_over_federation: + if self._allow_device_name_lookup_over_federation: device_display_name = device.display_name if device_display_name: result["device_display_name"] = device_display_name |