From 4cee8c7b9995b4075ac3a41bb3e53c5a7b4377a1 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Mon, 18 Aug 2025 09:28:59 -0500 Subject: [PATCH] Instrument `encode_response` with tracing in Sliding Sync requests (#18815) Just filling in the hole I see in the trace after `current_sync_for_user`. --- changelog.d/18815.misc | 1 + synapse/events/utils.py | 11 +++++++++-- synapse/rest/client/sync.py | 4 ++++ 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 changelog.d/18815.misc diff --git a/changelog.d/18815.misc b/changelog.d/18815.misc new file mode 100644 index 000000000..ad369e592 --- /dev/null +++ b/changelog.d/18815.misc @@ -0,0 +1 @@ +Instrument the `encode_response` part of Sliding Sync requests for more complete traces in Jaeger. diff --git a/synapse/events/utils.py b/synapse/events/utils.py index cae27136c..942072cf8 100644 --- a/synapse/events/utils.py +++ b/synapse/events/utils.py @@ -26,8 +26,8 @@ from typing import ( Any, Awaitable, Callable, + Collection, Dict, - Iterable, List, Mapping, Match, @@ -49,6 +49,7 @@ from synapse.api.constants import ( ) from synapse.api.errors import Codes, SynapseError from synapse.api.room_versions import RoomVersion +from synapse.logging.opentracing import SynapseTags, set_tag, trace from synapse.types import JsonDict, Requester from . import EventBase, StrippedStateEvent, make_event_from_dict @@ -710,9 +711,10 @@ class EventClientSerializer: "m.relations", {} ).update(serialized_aggregations) + @trace async def serialize_events( self, - events: Iterable[Union[JsonDict, EventBase]], + events: Collection[Union[JsonDict, EventBase]], time_now: int, *, config: SerializeEventConfig = _DEFAULT_SERIALIZE_EVENT_CONFIG, @@ -731,6 +733,11 @@ class EventClientSerializer: Returns: The list of serialized events """ + set_tag( + SynapseTags.FUNC_ARG_PREFIX + "events.length", + str(len(events)), + ) + return [ await self.serialize_event( event, diff --git a/synapse/rest/client/sync.py b/synapse/rest/client/sync.py index b6789a059..5e0596d1b 100644 --- a/synapse/rest/client/sync.py +++ b/synapse/rest/client/sync.py @@ -1017,6 +1017,7 @@ class SlidingSyncRestServlet(RestServlet): return 200, response_content + @trace_with_opname("sliding_sync.encode_response") async def encode_response( self, requester: Requester, @@ -1037,6 +1038,7 @@ class SlidingSyncRestServlet(RestServlet): return response + @trace_with_opname("sliding_sync.encode_lists") def encode_lists( self, lists: Mapping[str, SlidingSyncResult.SlidingWindowList] ) -> JsonDict: @@ -1058,6 +1060,7 @@ class SlidingSyncRestServlet(RestServlet): return serialized_lists + @trace_with_opname("sliding_sync.encode_rooms") async def encode_rooms( self, requester: Requester, @@ -1178,6 +1181,7 @@ class SlidingSyncRestServlet(RestServlet): return serialized_rooms + @trace_with_opname("sliding_sync.encode_extensions") async def encode_extensions( self, requester: Requester, extensions: SlidingSyncResult.Extensions ) -> JsonDict: