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

Aperta
#10,093 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
rust
Ambito
databases

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
Rust
Stelle
7.3k
Fork
924
Merge medio
3g 16h
PR unite (30g)
569

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di lance-format/lance

Tutte le issue di lance-format/lance

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.