diff options
author | Eric Eastwood <erice@element.io> | 2022-09-07 11:41:52 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-07 11:41:52 -0500 |
commit | d4d3249ded000219a4f875943632c3d0f928d58d (patch) | |
tree | 0fd96f4533c935708f7b4dd06d7aa49638067439 | |
parent | Fix latest deps CI (#13734) (diff) | |
download | synapse-d4d3249ded000219a4f875943632c3d0f928d58d.tar.xz |
Instrument `get_metadata_for_events` for tracing (#13730)
When backfilling, `_get_state_ids_after_missing_prev_event` calls [`get_metadata_for_events`](https://github.com/matrix-org/synapse/blob/26bc26586b4b95d63ce7e453e9312469843f796e/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.
-rw-r--r-- | changelog.d/13730.misc | 1 | ||||
-rw-r--r-- | synapse/storage/databases/main/state.py | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/changelog.d/13730.misc b/changelog.d/13730.misc new file mode 100644 index 0000000000..06da6581a4 --- /dev/null +++ b/changelog.d/13730.misc @@ -0,0 +1 @@ +Instrument `get_metadata_for_events` for understandable traces in Jaeger. diff --git a/synapse/storage/databases/main/state.py b/synapse/storage/databases/main/state.py index e607ccfdc9..af7bebee80 100644 --- a/synapse/storage/databases/main/state.py +++ b/synapse/storage/databases/main/state.py @@ -23,6 +23,7 @@ from synapse.api.errors import NotFoundError, UnsupportedRoomVersionError from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion from synapse.events import EventBase from synapse.events.snapshot import EventContext +from synapse.logging.opentracing import trace from synapse.storage._base import SQLBaseStore from synapse.storage.database import ( DatabasePool, @@ -143,6 +144,7 @@ class StateGroupWorkerStore(EventsWorkerStore, SQLBaseStore): return room_version + @trace async def get_metadata_for_events( self, event_ids: Collection[str] ) -> Dict[str, EventMetadata]: |