lance-format / lance-format/lance

Slice 1 (HITL): Lance-level wrapper surface + read-path tracer bullet

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

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, returned Reader, returned Writer. See parent §"Proposed Lance-Level Interfaces".
  • Adapt the existing WrappingObjectStore so current wrappers keep working unchanged (Compatibility section).
  • Route ObjectStore::open / open_with_size through the wrapper's reader hook for all schemes (local, file+uring, cloud). Local LocalObjectReader / UringReader stay specialized but are now wrapped.
  • Prove it: a test wrapper counts exact get_range calls on a plain file:// path (no file-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

  • WrappingLanceObjectStore trait defined with store + reader + writer wrap hooks
  • Existing WrappingObjectStore implementations continue to work (adapter or coexistence per Open Q1)
  • open / open_with_size return readers passed through the wrapper for every scheme
  • Test: a wrapper observes exact get_range count/byte totals on a file:// 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

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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.