Skip to content

Commit 18e8cab

Browse files
Associate the traceresponse header with the SERVER span
1 parent f2c2b72 commit 18e8cab

File tree

2 files changed

+11
-16
lines changed

2 files changed

+11
-16
lines changed

Diff for: instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/__init__.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,8 @@ async def __call__(self, scope, receive, send):
338338
if callable(self.server_request_hook):
339339
self.server_request_hook(span, scope)
340340

341+
server_span_context = trace.context_api.get_current()
342+
341343
@wraps(receive)
342344
async def wrapped_receive():
343345
with self.tracer.start_as_current_span(
@@ -371,7 +373,11 @@ async def wrapped_send(message):
371373

372374
propagator = get_global_response_propagator()
373375
if propagator:
374-
propagator.inject(message, setter=asgi_setter)
376+
propagator.inject(
377+
message,
378+
context=server_span_context,
379+
setter=asgi_setter,
380+
)
375381

376382
await send(message)
377383

Diff for: instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py

+4-15
Original file line numberDiff line numberDiff line change
@@ -303,15 +303,8 @@ def test_traceresponse_header(self):
303303
self.seed_app(app)
304304
self.send_default_request()
305305

306-
# traceresponse header corresponds to http.response.start span
307-
span = self.memory_exporter.get_finished_spans()[1]
308-
self.assertDictEqual(
309-
dict(span.attributes),
310-
{
311-
SpanAttributes.HTTP_STATUS_CODE: 200,
312-
"type": "http.response.start",
313-
},
314-
)
306+
span = self.memory_exporter.get_finished_spans()[-1]
307+
self.assertEqual(trace_api.SpanKind.SERVER, span.kind)
315308

316309
response_start, response_body, *_ = self.get_all_output()
317310
self.assertEqual(response_body["body"], b"*")
@@ -427,12 +420,8 @@ def test_websocket_traceresponse_header(self):
427420
self.send_input({"type": "websocket.disconnect"})
428421
_, socket_send, *_ = self.get_all_output()
429422

430-
# traceresponse header corresponds to the 2nd websocket.send span
431-
span = self.memory_exporter.get_finished_spans()[3]
432-
self.assertDictEqual(
433-
dict(span.attributes),
434-
{SpanAttributes.HTTP_STATUS_CODE: 200, "type": "websocket.send"},
435-
)
423+
span = self.memory_exporter.get_finished_spans()[-1]
424+
self.assertEqual(trace_api.SpanKind.SERVER, span.kind)
436425

437426
traceresponse = "00-{0}-{1}-01".format(
438427
format_trace_id(span.get_span_context().trace_id),

0 commit comments

Comments
 (0)