Skip to content

test(symbolizer): add symbol-ref tree integration tests and docs#5335

Open
jake-kramer wants to merge 3 commits into
symbolizer/symbolref-frontendfrom
symbolizer/symbolref-integration
Open

test(symbolizer): add symbol-ref tree integration tests and docs#5335
jake-kramer wants to merge 3 commits into
symbolizer/symbolref-frontendfrom
symbolizer/symbolref-integration

Conversation

@jake-kramer

@jake-kramer jake-kramer commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Part of a series: symbol-aware tree references (7 of 8)

Full context: #5317 (PR 1). The final functional PR: end-to-end integration tests + docs.

  1. symbolizer: expose address-level Resolve API (feat(symbolizer): expose address-level symbol resolution as a public API #5317)
  2. proto: SymbolRefTable + tree fields (feat(query): add SymbolRefTable and symbol_refs tree fields to the query API #5318)
  3. model/symbolref: intern table + merge rebasing (feat(model): add symbolref package for symbol-aware tree references #5321)
  4. model/symbolref: grouping + rebuild (feat(model): add unresolved-binary grouping and tree rebuild to symbolref #5322)
  5. symdb resolver output (feat(symdb): add symbol-ref tree resolver output #5332) · querybackend mode + aggregation (feat(querybackend): produce and aggregate symbol-ref tree reports #5333)
  6. frontend orchestration behind a default-off per-tenant flag (feat(frontend): resolve symbol-ref trees after the final merge #5334)
  7. integration tests + docs ← this PR
  8. symdb: compaction preserves line-less locations (fix(symdb): preserve line-less locations when rewriting partitions without functions #5337) — stacked at the bottom of the series, merges first

Based on #5334.

What

Integration coverage with symbolizer.symbol-ref-trees-enabled=true, each mapped to a fix:

  • Queryless {} symbolization via the tenant-wide index (the scenario that motivated grafana/pyroscope-squad#487).
  • Span-filtered tree query symbolizes correctly.
  • Mixed symbolized + unsymbolized datasets in one query.
  • Unknown build ID -> binary!0xaddr fallback, end to end.

Fixtures push unsymbolized profiles through the real ingest path (authentic __unsymbolized__ label), using the common single-mapping shape. Docs: the new flag, resolve timeout, queryless-now-works, and the fallback rendering.

Testing

The four symbol-ref integration tests pass; the existing symbolization test still passes; build/vet/gofmt clean.

@jake-kramer
jake-kramer force-pushed the symbolizer/symbolref-integration branch from 31c7dc6 to 6355a97 Compare July 9, 2026 16:07
@jake-kramer
jake-kramer force-pushed the symbolizer/symbolref-frontend branch from 445de3d to 2c09212 Compare July 9, 2026 20:53
@jake-kramer
jake-kramer force-pushed the symbolizer/symbolref-integration branch from 6355a97 to bac4cc6 Compare July 9, 2026 20:53
@jake-kramer
jake-kramer marked this pull request as ready for review July 9, 2026 21:11
@jake-kramer
jake-kramer requested review from a team as code owners July 9, 2026 21:11
@jake-kramer
jake-kramer force-pushed the symbolizer/symbolref-integration branch from c35a816 to dc8c837 Compare July 13, 2026 14:58
@jake-kramer
jake-kramer force-pushed the symbolizer/symbolref-frontend branch 2 times, most recently from 8507190 to 6e124dc Compare July 13, 2026 19:05
@jake-kramer
jake-kramer force-pushed the symbolizer/symbolref-integration branch 2 times, most recently from 5f36a6d to 7e134fd Compare July 13, 2026 19:27
@jake-kramer
jake-kramer force-pushed the symbolizer/symbolref-frontend branch from 6e124dc to 4fa35d0 Compare July 13, 2026 19:27
@jake-kramer
jake-kramer force-pushed the symbolizer/symbolref-integration branch from 7e134fd to f2e117c Compare July 13, 2026 19:48
@jake-kramer
jake-kramer force-pushed the symbolizer/symbolref-frontend branch 2 times, most recently from ae84568 to 2585589 Compare July 14, 2026 19:46
@jake-kramer
jake-kramer force-pushed the symbolizer/symbolref-integration branch from f2e117c to b7fffcf Compare July 14, 2026 19:47
Comment thread docs/sources/reference-pyroscope-v2-architecture/components/query-frontend.md Outdated
jake-kramer and others added 3 commits July 15, 2026 21:51
Add end-to-end integration coverage for the symbol-aware tree path
behind symbolizer.symbol-ref-trees-enabled: queryless ({}) symbolization
via the tenant-wide index, span-filtered symbolization, mixed
symbolized/unsymbolized datasets, unknown-build-ID fallback rendering,
and a flag-on-vs-legacy equivalence check. Fixtures push unsymbolized
profiles through the real ingest path so the __unsymbolized__ label is
set authentically, exercising the common single-mapping shape.

Document the new per-tenant flag and resolve timeout, the now-working
queryless behavior, and the binary!0xaddr fallback, with a recommended
fallback-rate alert expression.

The equivalence test records a pre-existing defect in the legacy
pprof-detour tree path (a non-zero maxNodes routes the sub-query through
the truncating pprof builder, which drops line-less locations before
symbolization runs) and skips the legacy comparison while asserting the
new path's correctness unconditionally.

Part of grafana/pyroscope-squad#487.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… after compaction

Mirror the post-compaction phase of the plain symbolization test on the
symbol-ref path: after the first L0 compaction, the queryless tree query
must still return symbolized frames. Filler pushes drive the planner,
since age-based batch flushing is only evaluated when another block
arrives at the level.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…flag

The query-frontend symbolization section mentioned -symbolizer.enabled
only in passing. Lead with how symbolization itself is enabled (the
per-tenant default flag and the debuginfod URL) before describing the
symbol-ref tree flag that builds on it.

Part of grafana/pyroscope-squad#487.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jake-kramer
jake-kramer force-pushed the symbolizer/symbolref-frontend branch from 2585589 to f2a55f0 Compare July 16, 2026 01:54
@jake-kramer
jake-kramer force-pushed the symbolizer/symbolref-integration branch from b7fffcf to 532a7d7 Compare July 16, 2026 01:54
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.

2 participants