Skip to content

*: Phases 3+4 — drop FrostDB-backed tests, rip frostdb out of go.mod#6356

Open
thorfour wants to merge 1 commit into
remove-frostdb-phase2bfrom
remove-frostdb-phase3
Open

*: Phases 3+4 — drop FrostDB-backed tests, rip frostdb out of go.mod#6356
thorfour wants to merge 1 commit into
remove-frostdb-phase2bfrom
remove-frostdb-phase3

Conversation

@thorfour
Copy link
Copy Markdown
Contributor

@thorfour thorfour commented May 8, 2026

Summary

Final phases of the FrostDB removal. Stacks on #6355 (Phase 2.B). Net diff: -22,759 lines.

Combined into one PR because the schema-proto removal that unblocks dropping frostdb from go.mod is part of the test/cleanup work.

Strategy (option C from the Phase 3 triage)

The FrostDB-backed tests aren't testing the new ClickHouse path — they're exercising a backend that's about to be deleted. Their carry-forward value is debatable, and a fresh ClickHouse-targeted integration test (using testcontainers, alongside the existing pkg/clickhouse/filter_test.go) is more honest than a port. Filed as a follow-up.

Deleted

  • pkg/ingester/ — the FrostDB-only TableIngester. The tiny Ingester interface that ProfileColumnStore consumes moved to pkg/profilestore.
  • pkg/parcacol/querier.go — the FrostDB-only querier. ClickHouse has its own (pkg/clickhouse/querier.go).
  • pkg/parca/parca_test.goTestPGOE2e, TestLabels, TestConsistency (already t.Skip'd), Benchmark_WriteRaw (already b.Skip'd). All spun up a real frostdb columnstore.
  • pkg/profilestore/profilestore_test.go — both tests were frostdb-backed.
  • pkg/query/query_test.go — both benchmarks were frostdb-backed.
  • The 9 frostdb-backed tests in pkg/query/columnquery_test.go (TestColumnQueryAPI*). The remaining filter / merge / utility tests are kept along with helper functions (MustReadAllGzip etc.) that other test files in the package depend on.
  • profile.Schema() — the function returning *dynparquet.Schema.

Reshaped

  • pkg/profile/schema.go: SchemaDefinition() now returns a small local SchemaDef struct instead of *schemapb.Schema. The proto-defined encoding/compression/sorting hints are dropped — they were only consumed by the parquet writer. The few fields actually read at runtime (Name, Type, Repeated, Nullable, Dynamic) survive on a hand-rolled struct. This severs the last frostdb proto import.
  • pkg/profilestore: gains a thin Ingester interface (same shape pkg/ingester defined).
  • pkg/query/sources_test.go: parcacol.NewQuerier is gone, so the source-only test now uses a tiny in-file nopQuerier — its methods are never actually called for SourceOnly=true requests.

go.mod / go.sum

Test plan

  • go build ./...
  • go vet ./...
  • go test -short ./... — all pass
  • CI green
  • Filed follow-up issue: testcontainers ClickHouse integration suite to restore the end-to-end coverage that was deleted here

🤖 Generated with Claude Code

Phases 3 and 4 of the FrostDB removal, combined because the schema
proto removal that lets us drop frostdb from go.mod is part of the
test cleanup.

Per the agreed strategy (option C from the Phase 3 triage): the
FrostDB-backed tests aren't testing the new ClickHouse path — they're
exercising a backend that's about to be deleted. Carry-forward value
is debatable, and a fresh ClickHouse-targeted integration test (using
testcontainers, alongside the existing pkg/clickhouse/filter_test.go
pattern) is more honest than a port. Filed as a follow-up.

Deleted:

* pkg/ingester/ — the FrostDB-only TableIngester. The tiny Ingester
  interface that ProfileColumnStore consumes moved to pkg/profilestore.
* pkg/parcacol/querier.go — the FrostDB-only querier. ClickHouse has
  its own querier (pkg/clickhouse/querier.go).
* pkg/parca/parca_test.go — TestPGOE2e, TestLabels, TestConsistency
  (already t.Skip'd), Benchmark_WriteRaw (already b.Skip'd). All
  spun up a real frostdb columnstore.
* pkg/profilestore/profilestore_test.go — Test_LabelName_Error and
  BenchmarkProfileColumnStoreWriteSeries, both frostdb-backed.
* pkg/query/query_test.go — Benchmark_Query_Merge,
  Benchmark_ProfileTypes, both frostdb-backed.
* The 9 frostdb-backed tests in pkg/query/columnquery_test.go
  (TestColumnQueryAPI{QueryRangeEmpty,QueryRange,QuerySingle,
  QueryFgprof,QueryCumulative,QueryDiff,Types,LabelNames,LabelValues}).
  The remaining filter / merge / utility tests are kept along with
  helper functions (MustReadAllGzip etc.) that other test files in
  the package depend on.
* profile.Schema() — the function returning *dynparquet.Schema.

Reshaped:

* pkg/profile/schema.go: SchemaDefinition() now returns a small local
  SchemaDef struct instead of *schemapb.Schema. The proto-defined
  encoding/compression/sorting hints are dropped — they were only
  consumed by the parquet writer. The few fields actually read at
  runtime (Name, Type, Repeated, Nullable, Dynamic) survive on a
  hand-rolled struct. This severs the last frostdb proto import.
* pkg/profilestore: gains a thin Ingester interface (the same shape
  the old pkg/ingester defined) so ProfileColumnStore can keep its
  dependency-injected ingester.
* pkg/query/sources_test.go: parcacol.NewQuerier is gone, so the
  source-only test now uses a tiny in-file nopQuerier — its methods
  are never actually called for SourceOnly=true requests.

go.mod / go.sum:

* github.com/polarsignals/frostdb — gone.
* github.com/polarsignals/iceberg-go — gone (was only used by the
  experimental Iceberg path inside the FrostDB branch).
* github.com/parquet-go/parquet-go — gone (was a transitive of frostdb;
  the AppendParquetValues paths in the vendored builders were
  stripped in Phase 2.B).

Net diff: -22759 lines.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@alwaysmeticulous
Copy link
Copy Markdown

alwaysmeticulous Bot commented May 8, 2026

✅ Meticulous spotted 0 visual differences across 288 screens tested: view results.

Meticulous evaluated ~4 hours of user flows against your PR.

Expected differences? Click here. Last updated for commit 6a422a6 *: Drop FrostDB-backed tests, rip frostdb out of go.mod. This comment will update as new commits are pushed.

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.

1 participant