lance-format / lance-format/lance

Slice 3: Reimplement IO stats as a pure store/reader/writer wrapper

Open
#7,336 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

#7331

What to build

Convert IO statistics into an ordinary Lance-level wrapper around the store, Reader, and Writer. Remove the bespoke local compensation: LocalObjectReader / UringReader / LocalWriter should no longer call IOTracker::record_read / record_write directly — stats come from the wrapped reader/writer counting the actual ranges Lance reads and writes.

Acceptance criteria

  • IOTracker reimplemented as a WrappingLanceObjectStore wrapping store + reader + writer
  • No record_read / record_write calls remain in local.rs / uring/* / object_writer.rs
  • Stats count exact ranges read from an opened local file (not just the initial open)
  • Existing IO-stats tests pass; add a local-read range-count assertion
  • Parity: local and cloud stats produced by the same mechanism

Blocked by

  • Blocked by #7332
  • Blocked by #7333

Design sections addressed

  • "Accurate I/O Statistics"; Success criterion #2

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

First resolve or review blockers #7332 and #7333, then inspect local.rs, uring/*, and object_writer.rs along with the existing IO-stats tests. Verify how the store, Reader, and Writer can be wrapped without direct record_read or record_write calls. Done means exact local-file ranges are counted, local and cloud stats share the mechanism, and the existing tests plus a local-read range assertion pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend, performance
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.