Skip to content

release: v0.8.5 — durability hardening (AOF rewrites never drop acked writes) - #456

Merged
TinDang97 merged 1 commit into
mainfrom
release/v0.8.5
Aug 8, 2026
Merged

release: v0.8.5 — durability hardening (AOF rewrites never drop acked writes)#456
TinDang97 merged 1 commit into
mainfrom
release/v0.8.5

Conversation

@TinDang97

Copy link
Copy Markdown
Collaborator

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 RewriteOverflow spill 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

  • WAL v3 mid-chain tears abort boot (exit 70; MOON_WAL_SALVAGE=1 override)
  • Sticky aof_last_append_status + per-writer aof_last_fsync_status latches; aof_rewrite_overflow_spilled / aof_reason_del_dropped INFO counters
  • Reason-DEL escalated backpressure, one shared bound per eviction sweep
  • Manifest-sync failure latch; failed-spill victim re-insert; eviction metadata widening (LFU/LRU/IDLETIME/WATCH-ABA); cluster election ack fixes; CLIENT TRACKING max_keys enforced

Release gate

  • fmt + clippy ×2 feature sets, macOS monoio 4541 + tokio 3705, VM Linux 4563 lib tests
  • rewrite_under_pipelined_load_loses_no_acked_writes e2e green on the VM
  • Crash-matrix nightly + ITERS=20 soak dispatched on the RC (b346910d) — soak-first-then-tag; merge blocks on those runs going green

Contents: CHANGELOG roll, Cargo.toml/lock bump, RELEASES.md row, README milestone table.

… 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
@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Warning

Review limit reached

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

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 @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 Plus

Run ID: 63a6a656-9a18-4a27-a972-0edfb5df8653

📥 Commits

Reviewing files that changed from the base of the PR and between b346910 and 7f44f6c.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (4)
  • CHANGELOG.md
  • Cargo.toml
  • README.md
  • RELEASES.md

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.

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Release v0.8.5: bump version and publish durability-hardening notes

📝 Documentation ⚙️ Configuration changes 🕐 Less than 10 minutes

Grey Divider

AI Description

• Bump crate version to v0.8.5 for the patch release.
• Publish v0.8.5 release notes across CHANGELOG/RELEASES/README tables.
• Mark v0.8.5 as current and record release date and evidence summary.
High-Level Assessment

The PR follows the standard release-cut pattern (version bump + changelog/releases/README updates). No meaningfully better alternative for this change set; the only review focus is correctness/consistency of version/date and the summary text.

Files changed (5) +11 / -3

Documentation (3) +9 / -1
CHANGELOG.mdAdd v0.8.5 header to changelog +2/-0

Add v0.8.5 header to changelog

• Introduces a new section header for release v0.8.5 dated 2026-08-08 to anchor the changelog entries for this release.

CHANGELOG.md

README.mdUpdate milestone table to mark v0.8.5 as current +2/-1

Update milestone table to mark v0.8.5 as current

• Adjusts the release milestone table: removes the "current" marker from v0.8.4 and adds a new v0.8.5 row marked as current with a condensed durability-hardening summary.

README.md

RELEASES.mdAdd v0.8.5 release entry with evidence summary +5/-0

Add v0.8.5 release entry with evidence summary

• Adds a new v0.8.5 section dated 2026-08-08 including milestones/waivers and a detailed evidence/validation narrative for the patch release contents and release gate.

RELEASES.md

Other (2) +2 / -2
Cargo.lockLockfile version bump to 0.8.5 +1/-1

Lockfile version bump to 0.8.5

• Updates the locked package metadata for the 'moon' crate from version 0.8.4 to 0.8.5 to match the release.

Cargo.lock

Cargo.tomlCrate version bump to 0.8.5 +1/-1

Crate version bump to 0.8.5

• Updates the package version field from 0.8.4 to 0.8.5 for the patch release cut.

Cargo.toml

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

To customize comments, go to the Qodo configuration screen, or learn more in the docs.

Qodo Logo

@TinDang97
TinDang97 merged commit ab4c393 into main Aug 8, 2026
10 checks passed
@TinDang97
TinDang97 deleted the release/v0.8.5 branch August 8, 2026 09:04
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