inplace_delete shouldn't access any data associated with a vector after `DataProvider::delete()` is called
- 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
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