Instrument get_metadata_for_events for tracing (#13730)

When backfilling, `_get_state_ids_after_missing_prev_event` calls [`get_metadata_for_events`](26bc26586b/synapse/handlers/federation_event.py (L1133)). For `#matrix:matrix.org`, it's called with 77k `state_events` which means 77 calls to the database and takes 28 seconds.
This commit is contained in:
Eric Eastwood 2022-09-07 11:41:52 -05:00 committed by GitHub
parent 8d7fcf9b76
commit d4d3249ded
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 0 deletions

1
changelog.d/13730.misc Normal file
View File

@ -0,0 +1 @@
Instrument `get_metadata_for_events` for understandable traces in Jaeger.

View File

@ -23,6 +23,7 @@ from synapse.api.errors import NotFoundError, UnsupportedRoomVersionError
from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion
from synapse.events import EventBase from synapse.events import EventBase
from synapse.events.snapshot import EventContext from synapse.events.snapshot import EventContext
from synapse.logging.opentracing import trace
from synapse.storage._base import SQLBaseStore from synapse.storage._base import SQLBaseStore
from synapse.storage.database import ( from synapse.storage.database import (
DatabasePool, DatabasePool,
@ -143,6 +144,7 @@ class StateGroupWorkerStore(EventsWorkerStore, SQLBaseStore):
return room_version return room_version
@trace
async def get_metadata_for_events( async def get_metadata_for_events(
self, event_ids: Collection[str] self, event_ids: Collection[str]
) -> Dict[str, EventMetadata]: ) -> Dict[str, EventMetadata]: