fix(index): prevent maintenance from undoing index drops - #8984
Conversation
|
Blocked: PR #8984 remains blocked by an unrelated flaky Rust linux-build check at head 7c77814. The linux-build check (Actions run 33836370883, job 100909623017) failed in test_create_ivf_hnsw_pq_multivec because recall was 0.4, below the required 0.5. The PR changes only rust/lance/src/io/commit/conflict_resolver.rs; focused runs passed repeatedly before reproducing the identical failure after 36 consecutive passes, and all 65 conflict-resolver tests pass. Please re-run the failed linux-build job. Alternatively, stabilize the flaky vector-recall test independently and then re-run CI. |
|
Blocked: PR #8984 remains blocked at head 7c77814 by the unrelated flaky Rust linux-build check. The current-head linux-build check (Actions run 33836370883, job 100909623017) failed in test_create_ivf_hnsw_pq_multivec because recall was 0.4, below the required 0.5. Same-head focused runs pass repeatedly, with a stress loop reproducing the identical assertion only after 36 consecutive passes; the repair changes only conflict-resolution logic, all 65 conflict-resolver tests pass, and every other CI check passes. Please re-run the failed linux-build job. Alternatively, stabilize the flaky vector-recall test independently and then re-run CI. |
majin1102
left a comment
There was a problem hiding this comment.
LGTM. The conflict semantics and regression coverage look correct. The nested predicates could potentially be simplified into normalized index-change sets in a follow-up, but I don’t consider that blocking.
Summary
Root cause
CreateIndexconflict detection compared onlynew_indicesnames. A drop is encoded with an emptynew_indiceslist, so stale optimize or append operations could be rebased after it and publish index metadata again.Validation
cargo test -p lance io::commit::conflict_resolver::tests --libcargo fmt --all -- --checkcargo clippy --all --tests --benches -- -D warningsFixes #8982