Skip to content
This repository was archived by the owner on Aug 3, 2026. It is now read-only.

feat: harden WorkTable beta and select index backends - #187

Merged
pathscale merged 23 commits into
masterfrom
feat/index-backend-using
Aug 3, 2026
Merged

feat: harden WorkTable beta and select index backends#187
pathscale merged 23 commits into
masterfrom
feat/index-backend-using

Conversation

@pathscale

@pathscale pathscale commented Aug 3, 2026

Copy link
Copy Markdown
Owner

Summary

This is the consolidated correctness and backend-selection PR for WorkTable 1.0.0-beta.1. It keeps WorkTablesIndex as the default while adding statically selected using backends and hardens the concurrent publication paths exercised by the paper benchmark campaign.

Index backends

  • worktables_index remains the default and supports persistence;
  • explicit indexset also supports the existing persistence representation;
  • explicit congee and arctic require persist: false;
  • backend choice is generated statically, without a runtime enum, trait object, or per-operation selection branch; and
  • WorkTablesIndex → IndexSet → WorkTablesIndex reload/mutation switching is covered without rebuilding persisted data.

Correctness and stabilization

  • exact WorkTablesIndex 0.0.4 and DataBucket 0.5.1 dependency alignment;
  • combined backend/versioned-publication regression coverage;
  • bounded, feature-gated stable-miss confirmation for B-tree-family providers;
  • feature-gated immutable row-version publication and grace-period reclamation;
  • reusable persistence-slot coalescing;
  • linearized vacuum test oracles;
  • same-key upserts hold one generated full-row lock across the existence decision and selected mutation while definitely absent keys retain the optimistic insert path;
  • enabled extreme same-key churn regression plus raw insert/delete mutation churn coverage; and
  • clean public rustdoc links.

Performance

  • successful WorkTablesIndex select delta: +0.461% median across six frozen-binary pairs;
  • ordinary update: -1.063% median latency delta;
  • absent-key upsert: +0.083% median;
  • existing-key upsert: +0.505% median; and
  • default latency-sensitive publication behavior remains unchanged unless the stronger modes are explicitly enabled.

Verification

  • exact CI command passed locally with the staged release dependencies: cargo test --locked --workspace --all-targets --all-features;
  • 129 WorkTable unit tests;
  • 334 integration tests passed, 4 explicitly ignored;
  • 62 codegen tests;
  • benchmark smoke targets passed;
  • cargo clippy --locked --workspace --all-targets --all-features -- -D warnings;
  • rustdoc passed with warnings denied; and
  • the original 240-cell shadow-concurrency campaign passed in full; after the lock-order review rewrite, the stable-confirmation mode passed 120/120 cells while retry-off WorkTablesIndex produced two transient unique-read mismatches in one of 120 cells. Thirty additional high-contention stable-confirmation repetitions passed 30/30. All writer, final-state, primary, stale-hit, torn-row, cardinality, and vacuum counters remained zero, so concurrent-consistency results require the explicit stable-index-read-retry mode.

Dependency order

CI cannot resolve the exact pins until WorkTablesIndex 0.0.4 and then DataBucket 0.5.1 are published. After this PR merges, publish worktable_codegen 1.0.0-beta.1 before worktable 1.0.0-beta.1. Keep this PR in draft until the dependency releases land; the branch itself is ready for review.

The full syntax, persistence contract, backend restrictions, and benchmark plan are in docs/index-backend-dsl-proposal.md.

@pathscale pathscale changed the title feat: select index backends with using syntax feat: harden WorkTable beta and select index backends Aug 3, 2026
@pathscale
pathscale marked this pull request as ready for review August 3, 2026 16:56
@pathscale
pathscale merged commit d31c47f into master Aug 3, 2026
2 of 5 checks passed
@pathscale
pathscale deleted the feat/index-backend-using branch August 3, 2026 16:57
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant