lance-format / lance-format/lance

Optimize local fs listing of transactions

Open
#3,904 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

In #3882 we are making conflict resolution a little slower for local filesystems. This is because we are using ObjectStore's list to list all the manifests. That implementation will call stat on each entry, even if it's a file path we don't care about.

Instead we can use a similar strategy we have in:

https://github.com/lancedb/lance/blob/55c86f9b60774a4d36172430c1a9b033d9c5dba9/rust/lance-table/src/io/commit.rs#L333

  1. Create an iterator of ManifestLocation just from the readdir results (will be missing e_tag and size).
  2. Collect just the entries we care about
  3. Then call stat of each of those in paralel to fill in e_tag and size.

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 the analogous strategy in rust/lance-table/src/io/commit.rs around line 333, then trace the local filesystem transaction listing that uses ObjectStore to enumerate manifests. The change is complete when relevant ManifestLocation entries come from readdir results and only those entries are stat'ed in parallel to fill e_tag and size.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
data-engineering
Issue type
Refactor
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.