Repository navigation
feat(seer): Return span links from the trace waterfall - #131057
Open
sentry-junior[bot] wants to merge 3 commits into
Open
sentry-junior[bot] wants to merge 3 commits into
sentry-junior[bot] wants to merge 3 commits into
Conversation
chargome
marked this pull request as draft
November 13, 2026 12:39
Seer's trace waterfall now selects the private sentry.links attribute and returns each span's parsed links under links, in the same shape as the trace item details endpoint. This lets Explorer and Code Mode follow links such as cache_origin from a cached Next.js pageload to the render that produced it. Spans.run_trace_query now uses the config it is given instead of a fresh default, so the waterfall can allow the private attribute without affecting other callers. Refs JSSDK-43 Co-authored-by: Charly Gomez <20254395+chargome@users.noreply.github.com>
EAP returns an empty string for spans without sentry.links, which was parsed as JSON and logged a warning for every link-less span. Malformed link attributes also raised AttributeError and failed the whole waterfall. Add tests for both, and for the trace endpoint still rejecting the private attribute. Refs JSSDK-43 Co-authored-by: Charly Gomez <20254395+chargome@users.noreply.github.com>
sentry-junior
Bot
force-pushed
the
feat/seer-trace-waterfall-span-links
branch
from
November 13, 2026 12:51
ff30735 to
75e5fa5
Compare
chargome
marked this pull request as ready for review
November 13, 2026 12:56
Member
|
bugbot run |
Contributor
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 75e5fa5. Configure here.
s1gr1d
reviewed
Nov 13, 2026
Move JSON parsing for sentry.links into parse_links_json next to serialize_link, and use it from both serialize_links and the Seer trace waterfall. Each link is parsed on its own, so one malformed link no longer drops the valid ones. Refs JSSDK-43 Co-authored-by: Charly Gomez <20254395+chargome@users.noreply.github.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Seer can't see span links today. They live in the private
sentry.linksattribute, and the trace waterfall that Explorer and Code Mode (sentry.rpc.get_trace_waterfall) read doesn't select it.This makes Seer's
get_trace_waterfallselectsentry.linksand return each span's parsed links underlinks, in the same shape as the trace item details endpoint (serialize_link). The raw JSON is removed fromadditional_attributes. Spans without links are unchanged.The motivating case is the cached-page work in getsentry/sentry-javascript#25318: a pageload served from a cached Next.js shell has no server spans, and its
cache_originlink is the only path to the render that produced the HTML.Spans.run_trace_queryignored theconfigit was given and always built a default one. It now uses the passed config, soquery_trace_datacan take an optionalconfigand only the Seer waterfall allows the private attribute. Every other caller still passes the default, so the trace view and other endpoints are unaffected.Cost: one extra column in the existing
GetTraceRequest, which is empty for almost every span.A Seer follow-up will render
linksin the trace tools.Refs JSSDK-43
via Charly Gomez.
--
View Session [Sentry]