diff options
author | Erik Johnston <erik@matrix.org> | 2021-08-06 15:45:15 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2021-08-09 11:38:38 +0100 |
commit | 717fca45b4add443581a36bb2a227a23b5ace40a (patch) | |
tree | 1f92dc5dd63a027087ae602bf23a728a0f3d8867 | |
parent | Add spans to federation (diff) | |
download | synapse-717fca45b4add443581a36bb2a227a23b5ace40a.tar.xz |
Add store_server_keys_json_multi
-rw-r--r-- | synapse/crypto/keyring.py | 28 | ||||
-rw-r--r-- | synapse/storage/databases/main/keys.py | 13 |
2 files changed, 25 insertions, 16 deletions
diff --git a/synapse/crypto/keyring.py b/synapse/crypto/keyring.py index 9e9b1c1c86..4a34b798a5 100644 --- a/synapse/crypto/keyring.py +++ b/synapse/crypto/keyring.py @@ -544,22 +544,18 @@ class BaseV2KeyFetcher(KeyFetcher): key_json_bytes = encode_canonical_json(response_json) - await make_deferred_yieldable( - defer.gatherResults( - [ - run_in_background( - self.store.store_server_keys_json, - server_name=server_name, - key_id=key_id, - from_server=from_server, - ts_now_ms=time_added_ms, - ts_expires_ms=ts_valid_until_ms, - key_json_bytes=key_json_bytes, - ) - for key_id in verify_keys - ], - consumeErrors=True, - ).addErrback(unwrapFirstError) + await self.store.store_server_keys_json_multi( + [ + ( + server_name, + key_id, + from_server, + time_added_ms, + ts_valid_until_ms, + key_json_bytes, + ) + for key_id in verify_keys + ], ) return verify_keys diff --git a/synapse/storage/databases/main/keys.py b/synapse/storage/databases/main/keys.py index 6990f3ed1d..1f01a5df0a 100644 --- a/synapse/storage/databases/main/keys.py +++ b/synapse/storage/databases/main/keys.py @@ -138,6 +138,19 @@ class KeyStore(SQLBaseStore): for i in invalidations: invalidate((i,)) + async def store_server_keys_json_multi( + self, + entries: List[Tuple[str, str, str, int, int, bytes]], + ): + await self.db_pool.simple_upsert_many( + table="server_keys_json", + key_names=("server_name", "key_id", "from_server"), + key_values=[e[:3] for e in entries], + value_names=("ts_added_ms", "ts_valid_until_ms", "key_json"), + value_values=[(e[3], e[4], db_binary_type(e[5])) for e in entries], + desc="store_server_keys_json_multi", + ) + async def store_server_keys_json( self, server_name: str, |