mirror of
https://git.datalinker.icu/vllm-project/vllm.git
synced 2025-12-10 19:45:01 +08:00
[BugFix] Prevent exporting duplicate OpenTelemetry spans (#9017)
This commit is contained in:
parent
434984e665
commit
cd5601ac37
@ -87,8 +87,19 @@ def test_traces(trace_service):
|
|||||||
f"The fake trace service didn't receive a trace within "
|
f"The fake trace service didn't receive a trace within "
|
||||||
f"the {timeout} seconds timeout")
|
f"the {timeout} seconds timeout")
|
||||||
|
|
||||||
attributes = decode_attributes(trace_service.request.resource_spans[0].
|
request = trace_service.request
|
||||||
scope_spans[0].spans[0].attributes)
|
assert len(request.resource_spans) == 1, (
|
||||||
|
f"Expected 1 resource span, "
|
||||||
|
f"but got {len(request.resource_spans)}")
|
||||||
|
assert len(request.resource_spans[0].scope_spans) == 1, (
|
||||||
|
f"Expected 1 scope span, "
|
||||||
|
f"but got {len(request.resource_spans[0].scope_spans)}")
|
||||||
|
assert len(request.resource_spans[0].scope_spans[0].spans) == 1, (
|
||||||
|
f"Expected 1 span, "
|
||||||
|
f"but got {len(request.resource_spans[0].scope_spans[0].spans)}")
|
||||||
|
|
||||||
|
attributes = decode_attributes(
|
||||||
|
request.resource_spans[0].scope_spans[0].spans[0].attributes)
|
||||||
assert attributes.get(SpanAttributes.LLM_RESPONSE_MODEL) == model
|
assert attributes.get(SpanAttributes.LLM_RESPONSE_MODEL) == model
|
||||||
assert attributes.get(
|
assert attributes.get(
|
||||||
SpanAttributes.LLM_REQUEST_ID) == outputs[0].request_id
|
SpanAttributes.LLM_REQUEST_ID) == outputs[0].request_id
|
||||||
@ -142,8 +153,19 @@ def test_traces_with_detailed_steps(trace_service):
|
|||||||
f"The fake trace service didn't receive a trace within "
|
f"The fake trace service didn't receive a trace within "
|
||||||
f"the {timeout} seconds timeout")
|
f"the {timeout} seconds timeout")
|
||||||
|
|
||||||
attributes = decode_attributes(trace_service.request.resource_spans[0].
|
request = trace_service.request
|
||||||
scope_spans[0].spans[0].attributes)
|
assert len(request.resource_spans) == 1, (
|
||||||
|
f"Expected 1 resource span, "
|
||||||
|
f"but got {len(request.resource_spans)}")
|
||||||
|
assert len(request.resource_spans[0].scope_spans) == 1, (
|
||||||
|
f"Expected 1 scope span, "
|
||||||
|
f"but got {len(request.resource_spans[0].scope_spans)}")
|
||||||
|
assert len(request.resource_spans[0].scope_spans[0].spans) == 1, (
|
||||||
|
f"Expected 1 span, "
|
||||||
|
f"but got {len(request.resource_spans[0].scope_spans[0].spans)}")
|
||||||
|
|
||||||
|
attributes = decode_attributes(
|
||||||
|
request.resource_spans[0].scope_spans[0].spans[0].attributes)
|
||||||
assert attributes.get(SpanAttributes.LLM_RESPONSE_MODEL) == model
|
assert attributes.get(SpanAttributes.LLM_RESPONSE_MODEL) == model
|
||||||
assert attributes.get(
|
assert attributes.get(
|
||||||
SpanAttributes.LLM_REQUEST_ID) == outputs[0].request_id
|
SpanAttributes.LLM_REQUEST_ID) == outputs[0].request_id
|
||||||
|
|||||||
@ -1245,7 +1245,7 @@ class LLMEngine:
|
|||||||
skip)
|
skip)
|
||||||
|
|
||||||
# Tracing
|
# Tracing
|
||||||
self.do_tracing(scheduler_outputs)
|
self.do_tracing(scheduler_outputs, finished_before)
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@ -1840,11 +1840,18 @@ class LLMEngine:
|
|||||||
def is_tracing_enabled(self) -> bool:
|
def is_tracing_enabled(self) -> bool:
|
||||||
return self.tracer is not None
|
return self.tracer is not None
|
||||||
|
|
||||||
def do_tracing(self, scheduler_outputs: SchedulerOutputs) -> None:
|
def do_tracing(self,
|
||||||
|
scheduler_outputs: SchedulerOutputs,
|
||||||
|
finished_before: Optional[List[int]] = None) -> None:
|
||||||
if self.tracer is None:
|
if self.tracer is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
for scheduled_seq_group in scheduler_outputs.scheduled_seq_groups:
|
for idx, scheduled_seq_group in enumerate(
|
||||||
|
scheduler_outputs.scheduled_seq_groups):
|
||||||
|
# Skip double tracing when using async output proc
|
||||||
|
if finished_before and idx in finished_before:
|
||||||
|
continue
|
||||||
|
|
||||||
seq_group = scheduled_seq_group.seq_group
|
seq_group = scheduled_seq_group.seq_group
|
||||||
if seq_group.is_finished():
|
if seq_group.is_finished():
|
||||||
self.create_trace_span(seq_group)
|
self.create_trace_span(seq_group)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user