Skip to content

fix stale blob crossings in nightly soak#18

Merged
feichai0017 merged 3 commits into
mainfrom
codex/fix-nightly-stale-blob-crossing
Jun 18, 2026
Merged

fix stale blob crossings in nightly soak#18
feichai0017 merged 3 commits into
mainfrom
codex/fix-nightly-stale-blob-crossing

Conversation

@feichai0017

@feichai0017 feichai0017 commented Jun 18, 2026

Copy link
Copy Markdown
Member

Summary

Fixes the nightly soak failures caused by stale blob crossings during DB/checkpoint churn and prepares the 0.7.2 patch release.

Root cause

  • DB background auto-merge used the global GUID-only merge candidate queue. In a multi-tree DB, a queued parent can become unreachable from live roots while still sharing children with a live tree or snapshot, allowing a live child to be delete-fenced.
  • The route cache allowed deeper parent anchors, but only validated the cached parent->child edge. It did not prove the parent was still reachable from the current root.
  • When walkers saw a delete-fenced child through a stale crossing, the failure surfaced as pending-delete I/O errors or, under crash soak, acknowledged revision loss.

Changes

  • Disable DB background auto-merge; DB compaction now stays rooted in live DB trees.
  • Restrict route cache entries to root-child crossings and clear stale candidates on restart.
  • Treat delete-fenced child pins as stale crossings and restart from the root instead of treating them as not found.
  • Fence DB view capture through the same snapshot path as Tree view.
  • Avoid merging snapshot-shared child blobs.
  • Bump holt to 0.7.2, add changelog notes, and update crate repository/homepage metadata to NoKV-Lab/holt.

Validation

  • cargo fmt --all
  • cargo test --workspace --all-features --locked
  • cargo clippy --workspace --all-features --all-targets --locked -- -D warnings
  • cargo package --locked --allow-dirty
  • cargo test -p holt --lib engine::route_cache::tests --locked -- --nocapture
  • DB normal soak targeted run
  • normal soak targeted run
  • crash soak targeted run

@feichai0017 feichai0017 marked this pull request as ready for review June 18, 2026 07:56
@feichai0017 feichai0017 merged commit 4e70ed6 into main Jun 18, 2026
11 checks passed
@feichai0017 feichai0017 deleted the codex/fix-nightly-stale-blob-crossing branch June 18, 2026 07:56
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