apache / apache/arrow-rs-object-store

ObjectStore Soft Delete Support

Open
#299 0 comments 0 reactions 0 assignees View on GitHub
enhancement help wanted
Dominant language
Rust
Stars
322
Forks
212
Avg merge
5d 2h
Merged PRs (30d)
10

Description

**Is your feature request related to a problem or challenge? Please describe what you are trying to do.**

Many object stores support some notion of versioning and/or generations. Additionally some, such as Azure Blob Storage, have a specialized notion of [soft deletion](https://learn.microsoft.com/en-us/azure/storage/blobs/soft-delete-blob-overview).

Full support for generations is likely out of scope not least because:

* It is unclear how to support versioning for `LocalFileSystem` whilst preserving atomicity
* The stores are not very consistent in how upserts/deletes interact with versions
* I lack a motivating use-case to guide the API design

**Describe the solution you'd like**

I would like a new method

```
/// Restore a previously deleted object if possible
///
/// Returns
/// - Error::AlreadyExists if the object is not deleted
/// - Error::NotFound if no soft deleted version can be restored
fn restore(&self, path: &Path) -> Result<()> {
Err(Error::NotImplemented)
}
```

**Describe alternatives you've considered**

We could not do this

**Additional context**

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the object-store API and its implementations, especially LocalFileSystem, against the proposed restore(path) contract. Define how soft-deleted objects are detected and restored across supported stores, including the stated AlreadyExists and NotFound outcomes; done means the API behavior and implementation scope are agreed and covered appropriately.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.