getsentry / getsentry/sentry-python

OpenAI Agents integration breaks parent-child span relationships due to isolation_scope usage

Abierto
#4,786 6 comentarios 0 reacciones 1 asignado Reclamado por @alexander-alderman-webb Ver en GitHub
Improvement Integration: OpenAI Agents Python Spans
Lenguaje dominante
Python
Estrellas
2.2k
Forks
669
Merge medio
1 d 1 h
PR fusionados (30 d)
213

Descripción

_(Full disclosure, the issue text & root cause analysis were done by Claude. The problem is very much a problem we're running into atm tho)_

## Problem

The OpenAI Agents integration in Sentry SDK creates separate traces instead of proper parent-child span relationships when agents are called from within existing trace contexts. This results in:

1. **Trace fragmentation**: Long "holes" appear in traces when agents are executing
2. **Lost context**: Agent spans don't appear as children of the calling span
3. **Poor observability**: Agent-to-agent (through `agent.as_tool()` create completely separate traces instead of nested spans

## Root Cause

The issue is in `sentry_sdk/integrations/openai_agents/patches/runner.py:28` where `sentry_sdk.isolation_scope()` is used:

```python
# Isolate each workflow so that when agents are run in asyncio tasks they
# don't touch each other's scopes
with sentry_sdk.isolation_scope():
agent = args[0]
with agent_workflow_span(agent):
# ... agent execution
```

The `isolation_scope()` creates a completely separate tracing context that breaks the connection to any existing parent span, even when that parent-child relationship is desired.

## Proposed Solution

Replace `sentry_sdk.isolation_scope()` with `sentry_sdk.new_scope()` on line 28:

```python
# Create new scope for local span management while preserving parent context
with sentry_sdk.new_scope():
agent = args[0]
with agent_workflow_span(agent):
# ... agent execution
```

This change would:

✅ **Preserve parent-child relationships**: Agent spans would properly nest under calling spans
✅ **Maintain concurrent isolation**: Different concurrent agent executions would still be isolated from each other
✅ **Keep existing functionality**: All current tests should continue to pass
✅ **Improve observability**: Traces would show the complete flow including agent work

## Impact

- **Current behavior**: Agent execution creates separate traces
- **Expected behavior**: Agent execution creates child spans within the existing trace
- **Backward compatibility**: This change should not break existing functionality

The concurrent agent execution test (line 673 in tests) should still pass because `new_scope()` provides sufficient isolation between parallel executions while allowing proper parent-child relationships.

## Files Affected

- `sentry_sdk/integrations/openai_agents/patches/runner.py` (line 28)

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.