Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 344a2f7

Browse files
Instrument FederationStateIdsServlet - /state_ids (#13499)
Instrument FederationStateIdsServlet - `/state_ids` so it's easier to follow what's going on in Jaeger when viewing a trace.
1 parent 19e5d44 commit 344a2f7

File tree

5 files changed

+21
-2
lines changed

5 files changed

+21
-2
lines changed

changelog.d/13499.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Instrument `FederationStateIdsServlet` (`/state_ids`) for understandable traces in Jaeger.

synapse/federation/federation_server.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,12 @@
6161
nested_logging_context,
6262
run_in_background,
6363
)
64-
from synapse.logging.opentracing import log_kv, start_active_span_from_edu, trace
64+
from synapse.logging.opentracing import (
65+
log_kv,
66+
start_active_span_from_edu,
67+
tag_args,
68+
trace,
69+
)
6570
from synapse.metrics.background_process_metrics import wrap_as_background_process
6671
from synapse.replication.http.federation import (
6772
ReplicationFederationSendEduRestServlet,
@@ -547,6 +552,8 @@ async def on_room_state_request(
547552

548553
return 200, resp
549554

555+
@trace
556+
@tag_args
550557
async def on_state_ids_request(
551558
self, origin: str, room_id: str, event_id: str
552559
) -> Tuple[int, JsonDict]:
@@ -569,6 +576,8 @@ async def on_state_ids_request(
569576

570577
return 200, resp
571578

579+
@trace
580+
@tag_args
572581
async def _on_state_ids_request_compute(
573582
self, room_id: str, event_id: str
574583
) -> JsonDict:

synapse/handlers/federation.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
from synapse.federation.federation_client import InvalidResponseError
6060
from synapse.http.servlet import assert_params_in_dict
6161
from synapse.logging.context import nested_logging_context
62-
from synapse.logging.opentracing import trace
62+
from synapse.logging.opentracing import tag_args, trace
6363
from synapse.metrics.background_process_metrics import run_as_background_process
6464
from synapse.module_api import NOT_SPAM
6565
from synapse.replication.http.federation import (
@@ -1081,6 +1081,8 @@ async def on_make_knock_request(
10811081

10821082
return event
10831083

1084+
@trace
1085+
@tag_args
10841086
async def get_state_ids_for_pdu(self, room_id: str, event_id: str) -> List[str]:
10851087
"""Returns the state at the event. i.e. not including said event."""
10861088
event = await self.store.get_event(event_id, check_room_id=room_id)

synapse/storage/databases/main/event_federation.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
from synapse.api.errors import StoreError
3434
from synapse.api.room_versions import EventFormatVersions, RoomVersion
3535
from synapse.events import EventBase, make_event_from_dict
36+
from synapse.logging.opentracing import tag_args, trace
3637
from synapse.metrics.background_process_metrics import wrap_as_background_process
3738
from synapse.storage._base import SQLBaseStore, db_to_json, make_in_list_sql_clause
3839
from synapse.storage.database import (
@@ -126,6 +127,8 @@ async def get_auth_chain(
126127
)
127128
return await self.get_events_as_list(event_ids)
128129

130+
@trace
131+
@tag_args
129132
async def get_auth_chain_ids(
130133
self,
131134
room_id: str,

synapse/util/ratelimitutils.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
make_deferred_yieldable,
2828
run_in_background,
2929
)
30+
from synapse.logging.opentracing import start_active_span
3031
from synapse.util import Clock
3132

3233
if typing.TYPE_CHECKING:
@@ -176,8 +177,11 @@ def on_both(r: object) -> object:
176177
# Ensure that we've properly cleaned up.
177178
self.sleeping_requests.discard(request_id)
178179
self.ready_request_queue.pop(request_id, None)
180+
wait_span_scope.__exit__(None, None, None)
179181
return r
180182

183+
wait_span_scope = start_active_span("ratelimit wait")
184+
wait_span_scope.__enter__()
181185
ret_defer.addCallbacks(on_start, on_err)
182186
ret_defer.addBoth(on_both)
183187
return make_deferred_yieldable(ret_defer)

0 commit comments

Comments
 (0)