diff --git a/synapse/storage/databases/main/events.py b/synapse/storage/databases/main/events.py
index f07e288056..6a30aa6f81 100644
--- a/synapse/storage/databases/main/events.py
+++ b/synapse/storage/databases/main/events.py
@@ -16,6 +16,7 @@
import itertools
import logging
from collections import OrderedDict, namedtuple
+from synapse.logging.opentracing import start_active_span
from typing import (
TYPE_CHECKING,
Any,
@@ -382,7 +383,8 @@ class PersistEventsStore:
# Insert into event_to_state_groups.
self._store_event_state_mappings_txn(txn, events_and_contexts)
- self._persist_event_auth_chain_txn(txn, [e for e, _ in events_and_contexts])
+ with start_active_span("_persist_event_auth_chain_txn"):
+ self._persist_event_auth_chain_txn(txn, [e for e, _ in events_and_contexts])
# _store_rejected_events_txn filters out any events which were
# rejected, and returns the filtered list.
@@ -393,12 +395,13 @@ class PersistEventsStore:
# From this point onwards the events are only ones that weren't
# rejected.
- self._update_metadata_tables_txn(
- txn,
- events_and_contexts=events_and_contexts,
- all_events_and_contexts=all_events_and_contexts,
- backfilled=backfilled,
- )
+ with start_active_span("_update_metadata_tables_txn"):
+ self._update_metadata_tables_txn(
+ txn,
+ events_and_contexts=events_and_contexts,
+ all_events_and_contexts=all_events_and_contexts,
+ backfilled=backfilled,
+ )
# We call this last as it assumes we've inserted the events into
# room_memberships, where applicable.
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,
|