microsoft / microsoft/DiskANN

inplace_delete shouldn't access any data associated with a vector after `DataProvider::delete()` is called

Open
#1,153 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Rust
Stars
1.9k
Forks
454
Avg merge
3d 22h
Merged PRs (30d)
35

Description

The current semantics of delete/release aren't really used. Instead, only delete is ever called, so DataProvider implementation implement this as a hard delete. However, inplace_delete calls `on_neighbors` for the deleted ID, which means DataProviders must leave the neighbor data intact.

We should instead treat delete as removing all data associated with the ID, and inplace_delete should copy any data it needs before the delete so it doesn't access them after.

Contributor guide

Open the contributing guide

Research direction

Trace the implementation of inplace_delete and DataProvider::delete, focusing on the on_neighbors call for the deleted ID. Determine which neighbor data inplace_delete needs before deletion, then verify that delete removes all data associated with the ID and that no data is accessed afterward.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
data, search
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.