summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--synapse/crypto/keyring.py28
-rw-r--r--synapse/storage/databases/main/keys.py13
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,