summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2021-08-06 15:45:15 +0100
committerErik Johnston <erik@matrix.org>2021-08-09 11:38:38 +0100
commit717fca45b4add443581a36bb2a227a23b5ace40a (patch)
tree1f92dc5dd63a027087ae602bf23a728a0f3d8867
parentAdd spans to federation (diff)
downloadsynapse-717fca45b4add443581a36bb2a227a23b5ace40a.tar.xz
Add store_server_keys_json_multi
-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,