fix: move TraceContext.spans from class to instance attribute #4432
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does this PR do?
The
spanslist inTraceContextwas defined as a class-level attribute, causing allTraceContextinstances to share the same list. This led to trace corruption when handling concurrent requests, as spans from different requests would be mixed together.The bug:
class TraceContext:
spans: list[Span] = [] # Shared by ALL instances!
The fix:
Moving
spansinitialization to__init__ensures eachTraceContextinstance has its own isolated spans list:Test Plan
Before fix: 3 concurrent requests → 1 merged trace with 34 spans
After fix: 3 concurrent requests → 3 separate traces with ~10 spans each