Repository navigation
Conversation
#1276 made the decoder read SST ingest bundles with Pebble's sstable package, while #1277's boundary test forbids every Pebble package. Both merged, and main has been red since. The decoder design already chose the sstable reader for EKVSSTI1 bundles, whose files are Pebble sstables. Record in both docs that the boundary keeps the Pebble engine out but allows exactly that package, and correct the as-built claim that the backup CLIs link no Pebble. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Gz1MesaSCqfXkJa9zb8Ysx
TestBackupLinksNoLiveClusterCode has failed on main since 927e4bf: snapshot_sst.go (#1276) imports github.com/cockroachdb/pebble/v2/sstable and the boundary (#1277) forbids the whole Pebble module. Exempt exactly that package. It cannot reach the Pebble engine, which imports it, and importing the engine or any other Pebble package still fails the test. The test also fails when an exemption goes unused, and TestForbiddenBackupDep pins the matching rules: exact for allowed paths, prefix for forbidden ones. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Gz1MesaSCqfXkJa9zb8Ysx
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Design: docs/design/2026_10_16_implemented_production_commonization.md
Design: docs/design/2026_04_29_implemented_snapshot_logical_decoder.md
Summary
The Test workflow (
test (ubuntu-latest)) has been red onmainsince 927e4bf (run 38914301223). Its only failure:Two PRs merged on the same day with rules that conflict. Each was green on its own branch.
3f097df6) addedinternal/backup/snapshot_sst.go. It readsEKVSSTI1SST ingest bundles withgithub.com/cockroachdb/pebble/v2/sstable.56780818) added the import-boundary test. The test forbids every package undergithub.com/cockroachdb/pebble.Which design is intended
Allow the sstable reader and keep the Pebble engine out (option 1).
internal/backuplinks no live-cluster machinery") and in M4. Pebble was on the list becausestorebrought in the Pebble engine andinternal/encryption.github.com/cockroachdb/pebble/v2importssstable, so the reverse import would be a cycle.go list -depsconfirms thatelastickv-backup,-snapshot-decode,-snapshot-encodeand-snapshot-archivelink no engine root, nostoreand nointernal/encryption.internal/backup) would need a new injection seam. The decode CLI and the encoder's self-test both reach the reader throughReadSnapshotFile/DecodeSnapshot, so those would need an injection point. That is an API change made only to shrink what gets linked, and the decode CLI would still link the same reader.Cost. I built each CLI with and without the import (
go build -overlay, go1.26.6, linux/amd64). The import adds 5.1 to 5.2 MiB per binary, about 1,900 Pebble symbols.elastickv-backupandelastickv-snapshot-archivecarry it without ever calling it. If that size matters, putting the reader behind such a seam is a possible follow-up. This PR does not do it.Changes
docs:records the decision.## Decisions: adds the exception.backup:changesimport_boundary_test.go.backupAllowedDepsexempts exactlygithub.com/cockroachdb/pebble/v2/sstable. It is matched exactly, not by prefix.TestForbiddenBackupDepchecks that the exemption is exact.pebble/v2,pebble/v2/sstable/blockand v1pebble/sstablestay forbidden.Behavior change
None. The changes are test and docs only. No production code changes, and binaries are the same as on
main, which has linkedsstablesince #1276.Risk
Low. The boundary is a little looser, by exactly one package. That package cannot bring in the engine,
storeorinternal/encryption.Test evidence
go test -race -count=1 ./internal/backup/... ./cmd/elastickv-backup/... ./cmd/elastickv-snapshot-decode/... ./cmd/elastickv-snapshot-encode/... ./cmd/elastickv-snapshot-archive/...: all pass.golangci-lintv2.9.0 (the CI pin) with--config=.golangci.yaml ./...: 0 issues.main,TestBackupLinksNoLiveClusterCodefails with the error above.main's behaviour): both tests fail;sstable/blockrow fails;pebble/v2row fails, and the unused-exemption check fails;go/buildreads files from disk: the unused-exemption check fails.mainrun already passed. This change touches no other package.Self-review (five lenses)
-race.sstablepredates this PR, and is measured and recorded above and in the doc.Generated by Claude Code
Summary by CodeRabbit