Repository navigation
fix(storage): bound adjacency merge reader buffers (#1278) - #1281
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. 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 |
This comment has been minimized.
This comment has been minimized.
|
Final validation at
The full local gate failed; this is not a full validation pass.
The CLI and Node wrapper source is outside this diff. The core result is the measured final-tree total; no same-head comparison with a separately measured main baseline is claimed. No floor has been lowered or waived. Local durable tests used the previously documented private ext4 The first clean-tree coverage attempt failed provenance validation: resume mode retained 84 older Python and 95 older Node profiles from the prior source alongside new profiles. The entire failed report was archived. Both complete profile populations and their acceptance stamps were moved out; The retention prerequisite was resolved independently in merged #1284; #1283 is verified closed. #1281 remains unmerged pending disposition of the observed local coverage failures, as local floors remain required by |
Query-time adjacency rebuilds allocated 1 MiB per merge reader, growing from 16 to 64 MiB at the default S20/S22 run counts. This change shares one aggregate 1 MiB budget across each merge, preserving decoding, ordering, fan-in, spill limits and publication behavior. Regression tests verify actual reader capacities and exact merged records through refill and 65-run compaction, including tiny/zero buffers and truncation rejection.
Comparable native S20→S22 process RSS is 182,755,328 → 193,495,040 bytes (5.88%), versus the preserved historical 31.59%. The accepted S18/S19/S20/S22 prefix passes all nine unchanged full S24 admission checks. A fresh replay after integrating the retention prerequisite also passes, using newly measured capacity and the unchanged reserve. No S24 workload ran; original measurements retain their original executable/source identities.
Acceptance evidence:
docs/development/evidence/query-rss-1278-repair.mdand its linked artifacts.Final exact-head CI Gate passes at
5cbeb91ff58d79e4b363f77bf416a33c50322b2e; GitHub reports CLEAN, no review threads, and closing reference exactly #1278. Independent review found no actionable findings. Final Clippy, formatting, fast checks, 1,113 storage tests, API/binding acceptance and host/admission tests pass.Full local validation fails coverage floors: core Rust 91.33% < 95%, CLI 79.34% < 80%, Node wrapper 80.32% < 85%. Changed Rust lines are 9/9 covered; both Rust adapters and Python wrapper pass. The final valid coverage ledger retains the exact source identity. Earlier dirty-tree and stale-profile attempts remain archived; the detailed validation comment records recovery and every result. No threshold is changed. The maintainer explicitly instructed merging despite these documented local coverage failures and deferred coverage repair. The full local gate remains recorded as failed; exact-head CI Gate passes.
Closes #1278.
Note
Bound
adjacencymerge reader buffers with shared 1 MB budgetmerge_keyed_runswith a sharedMERGE_READER_BUFFER_BYTESconstant (1 MB) divided across all concurrently opened run cursors, including compaction passes.open_run_cursorsdivides the budget by run count without rounding up; when fan-in exceeds the budget, individual readers get zero-capacity (unbuffered) reads.RunCursor::opennow accepts a caller-provided buffer size instead of selecting a fixed capacity internally.open_run_cursorswhen fan-in approaches or exceeds 1 MB worth of readers.Macroscope summarized 5cbeb91.