refactor(storage): hygiene — AofShardManifest rename, tier-vocabulary disambiguation, #48 RFC tie-in (W6) - #401
Conversation
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
|
Warning Review limit reached
Next review available in: 56 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. 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 Run ID: 📒 Files selected for processing (4)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
f1f8e90 to
5ec87fd
Compare
cdd5f8b to
247d776
Compare
… disambiguation, #48 RFC tie-in (W6) Closes out the storage-unification campaign's F6 hygiene tail: - persistence::aof_manifest::ShardManifest -> AofShardManifest. Two unrelated structs shared the name ShardManifest: the page manifest's (persistence::manifest — the durable spill/offload root every eviction/spill call site threads around) and the AOF manifest's per-shard entry. Same name, different on-disk formats, different planes — ambiguous in code search and in every cross-plane persistence discussion (the unified-manifest RFC lists this rename as a prerequisite). The AOF struct is private to its module tree (zero external importers), so the rename is contained to aof_manifest/{mod,shard_rewrite}.rs; a doc note on the struct records the collision rationale. - storage::tier::ResidencyTier doc note: disambiguates it from persistence::manifest::StorageTier — StorageTier is an ON-DISK FileEntry field with persisted byte values; ResidencyTier is the IN-MEMORY residency vocabulary (K4 types-only module, parked by design for the M4 tiering milestone). They intersect in concept but not in role and must not be merged. tier.rs itself stays: it is the documented K4 forward-vocabulary the vector-tiering-v2 plan adopts, not accidental dead code. - .planning/rfcs/unified-manifest-engine.md: adds the task #48 unified poison-record policy tie-in — a future manifest engine's section decoders must adopt the replication policy verbatim (fail-closed per section with an INFO counter, never skip-and-continue past an undecodable section). No behavior change; rename + docs only. Gates: lib suite 4427 green; clippy -D warnings on default and tokio,jemalloc feature sets; fmt. Stacked on refactor/w5-typed-accessors (PR #400). author: Tin Dang
5ec87fd to
80fb09a
Compare
…L fidelity (#404) Patch release rolling up the storage-unification stacked train (#396–#401) and the follow-up db.rs directory split (#403). Correctness: millisecond-TTL keys no longer expire up to 999 ms early (CompactEntry stored expiry as ms/1000-floored seconds; now absolute Unix ms end-to-end, exact PTTL readback, exact-ms RDB round-trips). Unification (behavior-preserving, pinned by golden byte-spec tests): one value codec behind RDB/spill/kv_serde with fail-closed corrupt decode + DoS count guards on every path; one spill pipeline — sync eviction batches victims into shared files (~N/256 manifest fsyncs instead of N per-key) and retains unserializable victims fail-closed; one eviction entry point (evict_to_budget + EvictionRun/EvictionSink, was 13 variants / 5 reclaim-loop copies); one typed-accessor skeleton (storage::db_kind static-dispatch markers); AofShardManifest rename; db.rs split into db/{mod,hash_ttl,kv_ops,accessors}.rs. Validation: same-VM A/B v0.8.1-vs-main — p=1 parity-or-better, eviction-plain faster every paired round, spill +3%, p=16 within noise. Release gate: crash-matrix nightly full matrix + ITERS=20 soak dispatched on the RC, green before tag (soak-first-then-tag). Rolls CHANGELOG [Unreleased] into [0.8.2], bumps Cargo.toml/lock, adds the RELEASES.md row, updates the README milestone table. author: Tin Dang
Summary
Sixth and final PR of the storage-unification campaign (stacked on #400 ← #399 ← #398 ← #397 ← #396). Closes out finding F6's hygiene tail.
aof_manifest::ShardManifest→AofShardManifest. Two unrelated structs shared the name: the page manifest's (persistence::manifest— the durable spill/offload root threaded through every eviction/spill call site) and the AOF manifest's per-shard entry. Same name, different on-disk formats, different planes — ambiguous in code search and every cross-plane persistence discussion (the unified-manifest RFC lists this rename as a prerequisite). The AOF struct has zero external importers, so the rename is contained toaof_manifest/{mod,shard_rewrite}.rs; a doc note on the struct records the rationale.storage::tierparked, disambiguated.ResidencyTiergained a doc note separating it frommanifest::StorageTier: StorageTier is an ON-DISKFileEntryfield with persisted byte values; ResidencyTier is the IN-MEMORY residency vocabulary (the K4 types-only module, kept by design for the M4 tiering milestone the vector-tiering-v2 plan adopts). They intersect in concept but not in role and must not be merged..planning/rfcs/unified-manifest-engine.md, planning submodule): a future manifest engine's section decoders must adopt the replication poison-record policy verbatim — fail-closed per section with an INFO counter, never skip-and-continue past an undecodable section.No behavior change; rename + docs only.
Gates
-D warnings×2 feature sets · fmt · CHANGELOG entry