lance-format / lance-format/lance
Slice 3: Reimplement IO stats as a pure store/reader/writer wrapper
Nobody has claimed this yet.
- 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
-
IOTrackerreimplemented as aWrappingLanceObjectStorewrapping store + reader + writer - No
record_read/record_writecalls remain inlocal.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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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