lance-format / lance-format/lance
Slice 1 (HITL): Lance-level wrapper surface + read-path tracer bullet
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
The foundational tracer bullet. Introduce a Lance-level wrapping surface that can decorate the store and the readers/writers it returns, then prove end-to-end observability on a path that bypasses inner today.
- Define
WrappingLanceObjectStore(or equivalent) able to wrap: store-level ops, returnedReader, returnedWriter. See parent §"Proposed Lance-Level Interfaces". - Adapt the existing
WrappingObjectStoreso current wrappers keep working unchanged (Compatibility section). - Route
ObjectStore::open/open_with_sizethrough the wrapper's reader hook for all schemes (local,file+uring, cloud). LocalLocalObjectReader/UringReaderstay specialized but are now wrapped. - Prove it: a test wrapper counts exact
get_rangecalls on a plainfile://path (nofile-object-store://).
This is HITL: the trait shape and Open Questions 1, 4, 5 in the parent need maintainer sign-off before the surface is committed.
Acceptance criteria
-
WrappingLanceObjectStoretrait defined with store + reader + writer wrap hooks - Existing
WrappingObjectStoreimplementations continue to work (adapter or coexistence per Open Q1) -
open/open_with_sizereturn readers passed through the wrapper for every scheme - Test: a wrapper observes exact
get_rangecount/byte totals on afile://local read - Open Questions 1, 4, 5 answered and recorded on the parent
- Existing wrapper / IO-stats tests still pass
Blocked by
None - can start immediately.
Design sections addressed
- Phase 1 (Add the Lance-Level Wrapper Surface), Phase 2 (Move Read Paths Behind Lance Readers)
- Open Questions 1, 4, 5
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
Start with parent PRD #7331 and Open Questions 1, 4, and 5, then trace ObjectStore::open, open_with_size, and existing WrappingObjectStore implementations. Verify completion with the file:// local-read wrapper test counting get_range calls and the existing wrapper/IO-stats tests; record the design decisions on the parent.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend-api-design, databases
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100