lance-format / lance-format/lance

Remove legacy Operation code paths

Open
#6,454 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Rust
Stars
7.1k
Forks
852
Avg merge
3d 18h
Merged PRs (30d)
272

Description

Parent PRD

Milestone: Action-based Transactions (UserOperation) — see milestone #11. Discussion: #5960.

Re-scoped. Originally "remove all legacy Operation logic". The build_manifest half is done — 9/13 operations route through Action::apply; the rest land via the per-operation issues below. The conflict-resolution half cannot be sliced per-operation in production (a conflict check is per pair of transactions, so a transition would hit mixed migrated/non-migrated pairs), so it is migrated in a parallel resolver validated by an M×M differential matrix (#6892 + per-operation issues). This issue is now the final cutover.

What to build

Precondition: every operation has been migrated onto the parallel action-level resolver and the differential matrix is green for the full N×N operation set.

  • Swap the production commit path from TransactionRebase::check_txn to the action-level resolver (a one-line call-site change against the legacy-shaped adapter from #6892).
  • Delete the per-Operation check_*_txn methods and all now-dead code in rust/lance/src/io/commit/conflict_resolver.rs.
  • Delete the differential test harness — its legacy oracle is gone. Keep the ported per-operation conflict unit tests; they are the permanent coverage.
  • Delete any remaining legacy build_manifest arms and the vestigial Action::conflicts_with.
  • cargo fmt --all; cargo clippy --all --tests --benches -- -D warnings clean.

The Operation enum itself remains for deserialization of old transaction files; only its apply/conflict logic is removed.

Acceptance criteria

  • Production commit path uses the action-level resolver
  • Per-Operation check_*_txn methods removed
  • Legacy build_manifest arms removed
  • Differential harness removed; ported unit tests retained and green
  • All existing tests pass through the action code path
  • No regression in transaction processing behavior

Blocked by

  • #6892 (conflict-resolution framework)
  • #6893, #6894, #6895 (already-translated operations)
  • #6896, #6897, #6898, #6842 (Overwrite / Rewrite / Update / DataReplacement)

User stories addressed

  • User story 5: single code path for applying operations
  • User story 6: single code path for conflict resolution

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

After #6892 and the listed per-operation migrations are complete, inspect rust/lance/src/io/commit/conflict_resolver.rs and the production commit path. Switch the call site to the action-level resolver, remove the obsolete Operation conflict methods, differential harness, legacy build_manifest arms, and Action::conflicts_with. Retain the ported unit tests, then run the full test suite, cargo fmt --all, and cargo clippy --all --tests --benches -- -D warnings.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
databases
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.