Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

perf: index coverage silently cleared once the manifest at dataset_version is cleaned up

Open
#10,093 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 3 days

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
rust
Domain
databases

Research direction

Start with prune_stale_segment_coverage in rust/lance/src/index.rs, then trace the merge-coverage history lookups and legacy-segment handling in rust/lance/src/dataset/optimize.rs. Compare those freshness checks with the current-manifest metadata named in the proposal. Done means coverage is retained after the old manifest is cleaned up, without pinning its referenced data files.

Written by the indexing model from the issue text.

Description

performance

Several index paths check out the manifest at a segment's dataset_version to decide which fragments are still fresh. If cleanup_old_versions has removed that manifest, they silently clear the segment's coverage, and queries fall back to flat scans.

Affected paths:

  • prune_stale_segment_coverage (rust/lance/src/index.rs), used when committing staged segments and in merges
  • history.at lookups in the merge-coverage code (index.rs)
  • legacy segments without a bitmap (rust/lance/src/dataset/optimize.rs)

This is likely in practice. Delete, Update, and immediate-remap compaction leave dataset_version unchanged, so it can age past the cleanup retention window. A distributed index build that runs longer than the retention window hits it too.

Results stay correct, but coverage is lost with no warning.

Proposed fix: decide freshness from metadata in the current manifest (overlay committed_versions, FRI version stamps, and per-fragment last-modified versions) instead of diffing against an old manifest. Keeping the old manifest during cleanup was rejected, because it would pin every data file that manifest references.

Dominant language
Rust
Stars
7.2k
Forks
900
Avg merge
4d 22h
Merged PRs (30d)
366

Getting set up

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

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.

More from lance-format/lance

All issues in lance-format/lance

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.