Skip to content

Conversation

@sentrivana
Copy link
Contributor

@sentrivana sentrivana commented Jan 14, 2026

Description

We weren't emitting client reports for spans dropped because they were over the span recorder limit.

Disclaimer: vibe coded but refactored and live tested by hand

Tested 3 times with an app with max_spans=3 and 10 spans in a transaction
Screenshot 2026-01-14 at 14 41 08

Issues

Closes #5308

Reminders

@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

Semver Impact of This PR

🟢 Patch (bug fixes)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


New Features ✨

  • feat(asyncio): Add on-demand way to enable AsyncioIntegration by sentrivana in #5288

Bug Fixes 🐛

  • fix(ai): redact message parts content of type blob by constantinius in #5243
  • fix(clickhouse): Guard against module shadowing by alexander-alderman-webb in #5250
  • fix(gql): Revert signature change of patched gql.Client.execute by alexander-alderman-webb in #5289
  • fix(grpc): Derive interception state from channel fields by alexander-alderman-webb in #5302
  • fix(litellm): Guard against module shadowing by alexander-alderman-webb in #5249
  • fix(pure-eval): Guard against module shadowing by alexander-alderman-webb in #5252
  • fix(ray): Guard against module shadowing by alexander-alderman-webb in #5254
  • fix(threading): Handle channels shadowing by sentrivana in #5299
  • fix(typer): Guard against module shadowing by alexander-alderman-webb in #5253
  • fix: Send client reports for span recorder overflow by sentrivana in #5310

Documentation 📚

  • docs(metrics): Remove experimental notice by alexander-alderman-webb in #5304
  • docs: Update Python versions banner in README by sentrivana in #5287

Internal Changes 🔧

Release

  • ci(release): Bump Craft version to fix issues by BYK in #5305
  • ci(release): Switch from action-prepare-release to Craft by BYK in #5290

Other

  • chore(gen_ai): add auto-enablement for google genai by shellmayr in #5295
  • ci: Update tox and handle generic classifiers by sentrivana in #5306

🤖 This preview updates automatically when you update the PR.

@sentrivana sentrivana marked this pull request as ready for review January 14, 2026 13:39
@sentrivana sentrivana requested a review from a team as a code owner January 14, 2026 13:39
"buffer_overflow",
data_category="span",
quantity=span_recorder_dropped_spans,
)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfinished spans incorrectly reported as buffer overflow

Medium Severity

The _dropped_spans event field contains both spans dropped due to buffer overflow AND unfinished spans (those without a timestamp), but the new code reports all of them with reason "buffer_overflow". In tracing.py, _dropped_spans is calculated as len_diff + self._span_recorder.dropped_spans, where len_diff counts unfinished spans. Only self._span_recorder.dropped_spans represents actual buffer overflow. This causes unfinished spans to be incorrectly categorized in client reports.

Fix in Cursor Fix in Web

Copy link
Contributor

@alexander-alderman-webb alexander-alderman-webb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

@sentrivana sentrivana merged commit 93855e7 into master Jan 14, 2026
165 of 167 checks passed
@sentrivana sentrivana deleted the ivana/fix-client-reports-for-dropped-spans branch January 14, 2026 13:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Spans dropped in span recorder not included in client reports

3 participants