release: v0.8.5 — durability hardening (AOF rewrites never drop acked writes) - #456
Conversation
… writes Patch release rolling up the 2026-08 deep-review wave (#453) and durability wave 1 (#452/#54, PR #454), both merged after two-round adversarial review. Headline: AOF rewrites no longer drop acked writes under sustained pipelined load. A per-writer RewriteOverflow spill buffer (256 MiB cap, strict ordering, all six fold arms on both runtimes) buffers appends while the writer is mid-fold, with an exactly-once snapshot cut so a committed fold discards pre-snapshot spills (effects live in the new base) and an aborted fold writes everything. Merge-base A/B: main lost ~5.6k acked writes per hit; fixed is exact across SIGKILL + recovery (251k appends through the overflow in the release-gate e2e). The re-verify round closed an abort-treated-as-commit P0, a same-key replay-inversion window, an ungated ordered-append leg, and taken-batch loss accounting; residual architectural findings tracked in #455. Also: WAL v3 mid-chain tears abort boot (exit 70; MOON_WAL_SALVAGE=1 override) instead of silently replaying past a hole; sticky aof_last_append_status + per-writer aof_last_fsync_status latches; reason-DEL escalated backpressure with one shared bound per eviction sweep; manifest-sync failure latch; failed-spill victim re-insert; eviction metadata widened (LFU decay, LRU inversion, OBJECT IDLETIME wrap, WATCH ABA); cluster election acks received + inline fast path disabled in cluster mode; CLIENT TRACKING max_keys enforced. Validation: fmt + clippy x2 feature sets; macOS monoio 4541 + tokio 3705 and VM Linux 4563 lib tests; rewrite-under-pipelined-load e2e; PR CI green on both PRs pre-merge; crash-matrix nightly + ITERS=20 soak dispatched on the RC (b346910), green before tag. Rolls CHANGELOG [Unreleased] into [0.8.5], bumps Cargo.toml/lock, adds the RELEASES.md row, updates the README milestone table. author: Tin Dang
|
Warning Review limit reached
Next review available in: 23 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the 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 configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (4)
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. Comment |
PR Summary by QodoRelease v0.8.5: bump version and publish durability-hardening notes
AI Description
High-Level Assessment
Files changed (5)
|
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewTo customize comments, go to the Qodo configuration screen, or learn more in the docs. |
Patch release rolling up #453 (2026-08 deep-review wave) and #454 (durability wave 1: #452/#54).
Headline
AOF rewrites no longer drop acked writes under sustained load: per-writer
RewriteOverflowspill buffer + exactly-once snapshot cut, all six fold arms, both runtimes. Merge-base A/B showed main losing ~5.6k acked writes per hit; fixed is exact across SIGKILL + recovery (251k appends through the overflow in the release-gate e2e run). Two-round adversarial review; the re-verify round closed an abort-treated-as-commit P0, a replay-inversion window, an ungated ordered leg, and loss-accounting gaps (residual findings → #455).Also
MOON_WAL_SALVAGE=1override)aof_last_append_status+ per-writeraof_last_fsync_statuslatches;aof_rewrite_overflow_spilled/aof_reason_del_droppedINFO countersmax_keysenforcedRelease gate
rewrite_under_pipelined_load_loses_no_acked_writese2e green on the VMb346910d) — soak-first-then-tag; merge blocks on those runs going greenContents: CHANGELOG roll, Cargo.toml/lock bump, RELEASES.md row, README milestone table.