Skip to content

feat(wal): bound producer state with reusable fenced slots - #434

Merged
beinan merged 1 commit into
lance-format:mainfrom
beinan:codex/wal-producer-lifecycle-v219
Oct 21, 2026
Merged

beinan merged 1 commit into
lance-format:mainfrom
beinan:codex/wal-producer-lifecycle-v219

Conversation

@beinan

@beinan beinan commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Writer UUID receipts currently accumulate until the replicated producer limit is reached, even after their data has been published and retired. Add an optional fixed slot table with durable generation fences so a closed writer can be replaced without accepting a delayed old request as a new write.

Allocation uses a saved generation/operation comparison; close checks the exact accepted tail; reuse requires that tail's signed source retirement. Latest retries remain valid until reuse, after which old generations are explicitly fenced. Quorum queries, checkpoint recovery and snapshot transfer preserve the cells. UUID-only groups keep their existing disk policy and image format; enabling slots requires fresh groups.

Validation includes real-process interrupted snapshot/restart coverage and a six-process real Lance publication/retirement case with early-reuse rejection, leader failure and full restart. This does not enable the production ingestion path or claim a throughput gain. Administrative authorization, SDK integration and migration remain separate work.

Refs #378.

Validation: the full repository check script passed (Rust workspace tests, fmt/Clippy, 229 Python tests, Ruff and Pyright) with a freshly built server. Optional WAL validation also passed: 105 library tests and 13 real-process regressions, including interrupted snapshot transfer, lost allocation replies, source retirement, leader loss and full restart.

@beinan
beinan marked this pull request as ready for review October 21, 2026 12:29
@beinan
beinan merged commit 0c505ce into lance-format:main Oct 21, 2026
11 checks passed
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