Skip to content

Commit 0a8fab6

Browse files
committed
Leave parent spans in place
1 parent f7545d8 commit 0a8fab6

File tree

2 files changed

+24
-18
lines changed

2 files changed

+24
-18
lines changed

temporalio/contrib/openai_agents/_trace_interceptor.py

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -370,61 +370,66 @@ class _ContextPropagationWorkflowOutboundInterceptor(
370370
async def signal_child_workflow(
371371
self, input: temporalio.worker.SignalChildWorkflowInput
372372
) -> None:
373-
trace = get_trace_provider().get_current_trace()
374-
set_header_from_context(input, temporalio.workflow.payload_converter())
375-
if trace:
373+
if get_trace_provider().get_current_trace():
376374
with custom_span(
377375
name="temporal:signalChildWorkflow",
378376
data={"workflowId": input.child_workflow_id},
379377
):
378+
set_header_from_context(input, temporalio.workflow.payload_converter())
380379
await self.next.signal_child_workflow(input)
381-
await self.next.signal_child_workflow(input)
380+
else:
381+
set_header_from_context(input, temporalio.workflow.payload_converter())
382+
await self.next.signal_child_workflow(input)
382383

383384
async def signal_external_workflow(
384385
self, input: temporalio.worker.SignalExternalWorkflowInput
385386
) -> None:
386-
trace = get_trace_provider().get_current_trace()
387-
set_header_from_context(input, temporalio.workflow.payload_converter())
388-
if trace:
387+
if get_trace_provider().get_current_trace():
389388
with custom_span(
390389
name="temporal:signalExternalWorkflow",
391390
data={"workflowId": input.workflow_id},
392391
):
392+
set_header_from_context(input, temporalio.workflow.payload_converter())
393393
await self.next.signal_external_workflow(input)
394-
await self.next.signal_external_workflow(input)
394+
else:
395+
set_header_from_context(input, temporalio.workflow.payload_converter())
396+
await self.next.signal_external_workflow(input)
395397

396398
def start_activity(
397399
self, input: temporalio.worker.StartActivityInput
398400
) -> temporalio.workflow.ActivityHandle:
399-
trace = get_trace_provider().get_current_trace()
400-
set_header_from_context(input, temporalio.workflow.payload_converter())
401-
if trace:
401+
if get_trace_provider().get_current_trace():
402402
with custom_span(
403403
name="temporal:startActivity", data={"activity": input.activity}
404404
):
405+
set_header_from_context(input, temporalio.workflow.payload_converter())
405406
return self.next.start_activity(input)
407+
408+
set_header_from_context(input, temporalio.workflow.payload_converter())
406409
return self.next.start_activity(input)
407410

408411
async def start_child_workflow(
409412
self, input: temporalio.worker.StartChildWorkflowInput
410413
) -> temporalio.workflow.ChildWorkflowHandle:
411-
trace = get_trace_provider().get_current_trace()
412-
set_header_from_context(input, temporalio.workflow.payload_converter())
413-
if trace:
414+
if get_trace_provider().get_current_trace():
414415
with custom_span(
415416
name="temporal:startChildWorkflow", data={"workflow": input.workflow}
416417
):
418+
set_header_from_context(input, temporalio.workflow.payload_converter())
417419
return await self.next.start_child_workflow(input)
420+
421+
set_header_from_context(input, temporalio.workflow.payload_converter())
418422
return await self.next.start_child_workflow(input)
419423

420424
def start_local_activity(
421425
self, input: temporalio.worker.StartLocalActivityInput
422426
) -> temporalio.workflow.ActivityHandle:
423-
trace = get_trace_provider().get_current_trace()
424-
set_header_from_context(input, temporalio.workflow.payload_converter())
425-
if trace:
427+
if get_trace_provider().get_current_trace():
426428
with custom_span(
427429
name="temporal:startLocalActivity", data={"activity": input.activity}
428430
):
431+
set_header_from_context(input, temporalio.workflow.payload_converter())
429432
return self.next.start_local_activity(input)
433+
434+
set_header_from_context(input, temporalio.workflow.payload_converter())
430435
return self.next.start_local_activity(input)

tests/contrib/openai_agents/test_openai_tracing.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@ def paired_span(a: tuple[Span[Any], bool], b: tuple[Span[Any], bool]) -> None:
123123
s for (s, _) in processor.span_events if s.span_id == span.parent_id
124124
]
125125
assert (
126-
len(parents) == 2 and parents[0].span_data.export()["type"] == "agent"
126+
len(parents) == 2
127+
and parents[0].span_data.export()["name"] == "temporal:startActivity"
127128
)
128129

129130
# Final writer spans - There are only 3 because we don't make an actual model call

0 commit comments

Comments
 (0)