Skip to content

test(persistence): fix crash_recovery_graph_durability g1-g3 WAL v2 flat-file probe (task #31)#324

Merged
pilotspacex-byte merged 1 commit into
mainfrom
fix/task-31-graph-durability-harness
Jul 14, 2026
Merged

test(persistence): fix crash_recovery_graph_durability g1-g3 WAL v2 flat-file probe (task #31)#324
pilotspacex-byte merged 1 commit into
mainfrom
fix/task-31-graph-durability-harness

Conversation

@pilotspacex-byte

Copy link
Copy Markdown
Contributor

Summary

Verification

  • g1–g5 green 3× consecutively on macOS (release-fast, MOON_BIN pinned to a fresh binary — the stale target/release/moon fallback reproduces the old failure).
  • Agent run verified 5/5 on the Linux dev VM (release profile) as well.
  • cargo fmt --check clean; test-only change (no src/).

Closes task #31.

…lat-file probe (task #31)

The G1-G3 legacy-mode graph crash tests never reached their kill -9
scenario: wait_for_wal_bytes and G3's replay-idempotency length check
still polled the flat <dir>/shard-0.wal WAL v2 layout, deleted in PR #236
one day before this test file was added (#237). The probe timed out after
20s waiting for a file that is never created — on every platform (Linux VM
reproduces identically; not a macOS durability gap) — masked because the
suite is #[ignore]d and no CI job runs it with --ignored.

Both helpers now scan the real <dir>/shard-0/wal-v3/*.wal segment
directory. The new wal_dir_total_bytes helper for G3 excludes each
segment's fixed 64-byte WAL_V3_HEADER_SIZE so the fresh active segment
each boot opens isn't misread as replay-time double-append.

The underlying replay_graph_wal RESP-parse bug these tests expose (graph
plane silently dropped on legacy-mode restart) was fixed separately in
PR #322 (task #60); this harness fix is what lets g1-g3 prove it.

Verification: g1-g5 green 3x consecutively on macOS (release-fast,
MOON_BIN pinned to fresh binary per the stale-target/release trap);
agent run additionally verified 5/5 on the Linux dev VM. fmt clean.

Refs: task #31, PR #236, PR #237, PR #322
author: Tin Dang
@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@coderabbitai

coderabbitai Bot commented Jul 13, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@pilotspacex-byte, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 18 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c422999b-ef9c-4088-b9e8-94e26e8552c2

📥 Commits

Reviewing files that changed from the base of the PR and between 0039795 and 17c441f.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • tests/crash_recovery_graph_durability.rs
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/task-31-graph-durability-harness

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@pilotspacex-byte
pilotspacex-byte merged commit e653705 into main Jul 14, 2026
8 checks passed
TinDang97 added a commit that referenced this pull request Jul 14, 2026
…(v0.7.0 prep)

Owner reconciliation 2026-07-14 of docs/PRODUCTION-CONTRACT.md against the
tree (main is 67 commits past the v0.6.0 tag, carrying the full v0.6.1
hygiene scope and the v0.7 replication workstreams untagged):

Re-ticked with verified evidence:
- FUZZ-01: graph_props_record.rs restored, all 12 declared targets exist
- ACL-REG-01: TXN/WS/MQ/TEMPORAL/CDC in metadata.rs + monoio intercept
  reorder (PR #258)
- COLD-TTL-01: ColdIndex::sweep_expired + info_reclamation counters
- SEC-07: SECURITY.md now states a release-agnostic supported-versions
  policy (latest minor line pre-1.0, LTS from v1.0.0)

Updated honestly:
- FT-PARITY-01: FT.AGGREGATE shipped (ft_aggregate.rs); FT.ALTER still
  absent -- stays unticked
- CRASH-01: caveats recorded -- graph-durability g1-g3 never actually ran
  before PRs #322/#324 (WAL v2 flat-file probe + legacy replay no-op);
  crash_recovery_disk_offload_no_aof residual red (task #44)
- SUPPLY-01: supply-chain.yml workflow in flight (task #63), tick on merge

New rows for shipped-but-previously-untracked guarantees:
- CRASH-02: 37-cell cross-plane kill-9 matrix (v0.8 G1, PR #298 + the 4
  RED-group fixes #52/#53/#57/#60)
- MEM-10X-01: 10x RAM datasets G2 acceptance (restart readiness 157s->3.7s,
  PRs #319/#297/#320)
- REPL-PLANES-01: all-plane replication (Waves A/B, PRs #285/#294)
- REPL-SOAK-01 (unticked): 24h replication soak gates the v0.7.0 tag

Header refreshed (milestone = v0.7.0 Replication GA, tag gated on soak).
scripts/check-production-contract.sh parses all new rows; GA-blocking gap
is now an honest 17 rows.

Refs: tasks #61-#65
author: Tin Dang
pilotspacex-byte added a commit that referenced this pull request Jul 14, 2026
…(v0.7.0 prep) (#325)

Owner reconciliation 2026-07-14 of docs/PRODUCTION-CONTRACT.md against the
tree (main is 67 commits past the v0.6.0 tag, carrying the full v0.6.1
hygiene scope and the v0.7 replication workstreams untagged):

Re-ticked with verified evidence:
- FUZZ-01: graph_props_record.rs restored, all 12 declared targets exist
- ACL-REG-01: TXN/WS/MQ/TEMPORAL/CDC in metadata.rs + monoio intercept
  reorder (PR #258)
- COLD-TTL-01: ColdIndex::sweep_expired + info_reclamation counters
- SEC-07: SECURITY.md now states a release-agnostic supported-versions
  policy (latest minor line pre-1.0, LTS from v1.0.0)

Updated honestly:
- FT-PARITY-01: FT.AGGREGATE shipped (ft_aggregate.rs); FT.ALTER still
  absent -- stays unticked
- CRASH-01: caveats recorded -- graph-durability g1-g3 never actually ran
  before PRs #322/#324 (WAL v2 flat-file probe + legacy replay no-op);
  crash_recovery_disk_offload_no_aof residual red (task #44)
- SUPPLY-01: supply-chain.yml workflow in flight (task #63), tick on merge

New rows for shipped-but-previously-untracked guarantees:
- CRASH-02: 37-cell cross-plane kill-9 matrix (v0.8 G1, PR #298 + the 4
  RED-group fixes #52/#53/#57/#60)
- MEM-10X-01: 10x RAM datasets G2 acceptance (restart readiness 157s->3.7s,
  PRs #319/#297/#320)
- REPL-PLANES-01: all-plane replication (Waves A/B, PRs #285/#294)
- REPL-SOAK-01 (unticked): 24h replication soak gates the v0.7.0 tag

Header refreshed (milestone = v0.7.0 Replication GA, tag gated on soak).
scripts/check-production-contract.sh parses all new rows; GA-blocking gap
is now an honest 17 rows.

Refs: tasks #61-#65
author: Tin Dang

Co-authored-by: Tin Dang <tindang.ht97@gmail.com>
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