Implement S3 snapshot manager
Opened this issue ยท 11 comments
Is your feature request related to a problem? Please describe.
Continuation of the issue #3324
In previous iterations we decomposed Snapshot manager into multiple implementations, depending of the storage backend.
But SnapshotStorageS3
is currently not implemented and not used.
Describe the solution you'd like
- Implement missing functions in
SnapshotStorageS3
- Alter the settings, to allow explicitly select between local FS and S3
Example:
storage:
# Where to store snapshots
snapshots_path: ./snapshots
s3_config:
bucket: "s3://hello-world"
snapshots_storage: "s3" | "local" # "local" - default
- Provide an integration test, which would run in CI and demonstrate that it is possible to create and recover from snapshot stored in s3 (deploy minio locally?) - similar to https://github.com/qdrant/qdrant/blob/3ad1528ebe04a45a4034f8f49d5458da01009487/tests/snapshots/snapshots-recovery.sh
Describe alternatives you've considered
Additional context
There are some notable previous attempts which might be helpful - #3430
/bounty $200
## ๐ $200 bounty โข Qdrant
### Steps to solve:
1. Start working: Comment /attempt #4109
with your implementation plan
2. Submit work: Create a pull request including /claim #4109
in the PR body to claim the bounty
3. Receive payment: 100% of the bounty is received 2-5 days post-reward. Make sure you are eligible for payouts
### Additional opportunities:
- ๐ด Livestream on Algora TV while solving this bounty & earn $200 upon merge! Comment /livestream
once live
Thank you for contributing to qdrant/qdrant!
Add a bounty โข Share on socials
Attempt | Started (GMT+0) | Solution |
---|---|---|
๐ด @varshith257 | Apr 25, 2024, 8:18:54 PM | WIP |
๐ข @kemkemG0 | Apr 29, 2024, 10:07:24 PM | #4150 |
๐ด @kid-116 | Apr 30, 2024, 7:26:40 PM | WIP |
๐ข @abhishek818 | May 1, 2024, 4:01:36 AM | WIP |
What are the expected functions to fully implement SnapshotStorageS3?
impl SnapshotStorageS3 {
async fn delete_snapshot(&self, _snapshot_path: &Path) -> CollectionResult<bool> {
unimplemented!()
}
async fn list_snapshots(
&self,
_directory: &Path,
) -> CollectionResult<Vec<SnapshotDescription>> {
unimplemented!()
}
async fn store_file(
&self,
_source_path: &Path,
_target_path: &Path,
) -> CollectionResult<SnapshotDescription> {
unimplemented!()
}
async fn get_stored_file(
&self,
_storage_path: &Path,
_local_path: &Path,
) -> CollectionResult<()> {
unimplemented!()
}
}
@kemkemG0 I am almost done with it. Can you please look at another issue rather waste of efforts? :)
/attempt #4109
Algora profile | Completed bounties | Tech | Active attempts | Options |
---|---|---|---|---|
@abhishek818 | 1 Qdrant bounty + 2 bounties from 2 projects |
JavaScript, TypeScript |
Cancel attempt |
๐ก @kemkemG0 submitted a pull request that claims the bounty. You can visit your bounty board to reward.
๐๐ @kemkemG0 has been awarded $200! ๐๐