Repository navigation
D-WAL: LanceCycleWriter vs MemWAL measured; capped session cache, version clock, copy-free temporal projections - #1562
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
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 |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 12319fef8b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
… MemWAL (D-WAL-1..3) Validation (SIGKILL atomicity, acknowledged => durable, idempotent resubmit, read horizon), cost per cycle and per row, and a 60-minute soak per arm. Feeds D-LNC-7 without deciding it. AGENT_LOG records the three mapper runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
… 0.40 MemWAL path; D-WAL-2/3 harness Shared harness writes the same logical cycle on both arms; gated on lancedb-sdk. lancedb rejects UInt64 as a primary key, so M's pk is Int64. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…d; MemWAL writes invisible to other readers until flush or replay Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…e cycle sizes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
Maps the spec's atomicity, durability, recovery, visibility, fencing, compaction and GC rules onto the measured V1-V4 and cost results. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…tate The soak stopped at 27.5 min / 1,649 cycles when the container restarted. MemWAL commit p50 stayed flat at 2.0-2.8 ms while LanceCycleWriter's grew from 5.8 to about 10.5 ms over 1,649 versions. MemWAL keeps its WAL after each flush (1.57x the disk). Both scans grow linearly in rows; LanceCycleWriter's RSS grew 95 -> 762 MiB, not yet explained. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…pped session) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…, measured Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
… metadata cache Every Lance commit caches a manifest clone per version; in this append-only store that grew as V^2/2 (D-WAL-4). Test-first: 400 commits reached 42.6 MB on the default session; with the cap the cache stays under 8 MiB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…o array reads Eight bytes per version; row-version oracle test over 200 versions with gaps and empty versions; seeded clocks refuse versions before their base. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…s at 400k rows) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…orms become wrappers deinterlace_indices / local_trajectories_indices / local_trajectory_indices_of return positions into the input (4 B per row) and clone nothing; the existing copying functions keep their signatures and map the indices. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…ession field) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…, VersionClock in the contract inventory Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…mber (citation-decay) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…tures; temporal index forms refuse > u32::MAX rows CI runs 'cargo test --test *', and cargo refuses an explicitly selected target whose required features are off. The index forms of deinterlace and local trajectories now panic instead of wrapping when the input exceeds u32::MAX rows (Codex P2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
…arget ACK V1 sweeps kill delays from 0 ms to 10 s and asserts the sweep produced both a landed and an empty store; before, a one-sided sweep only printed INCONCLUSIVE and passed. V2 asserts the child acknowledged the target cycle before the kill; before, a child that died early left nothing to recover and the recovery checks passed vacuously. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
683d247 to
e38779f
Compare
board: #1562 merged (D-WAL) — PR arc entry and LATEST_STATE
Plan:
.claude/plans/wal-shootout-v1.md. Board entry:.claude/board/entries/2026-10-15-d-wal-shootout.md.Measured
durable_write = truefor that. Its acknowledged writes are visible only to the writing handle until a flush or a WAL replay.LanceCycleWriterfrom 1,024 casts per cycle.Changes
LanceCycleWriternow opens and writes on a Lance session whose metadata cache is capped at 8 MiB (SESSION_METADATA_CACHE_BYTES).temporal_pov::{VersionClock, ClockError}.rows_at(&TemporalPov)returns one half-open row range: 4.2 ns per call on an AVX-512 host, against 127 µs for a per-row scan of 400k rows.temporal.rsgainsdeinterlace_indices,local_trajectories_indicesandlocal_trajectory_indices_of. They return positions into the input and clone no row. The copying functions keep their signatures and wrap the index forms.Verification
-D warningspasses on every changed target. It still fails on two existing files this PR does not touch:planner/examples/probe_r2il_real_episodes.rsandplanner/tests/moore_nars16_probe.rs.Still open
🤖 Generated with Claude Code
https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh
Generated by Claude Code