test:abort_multipart_upload

This commit is contained in:
weisd
2024-07-29 15:08:27 +08:00
parent bb81b7b8d9
commit 6165ac334b
5 changed files with 39 additions and 17 deletions

30
TODO.md
View File

@@ -2,22 +2,22 @@
## 基础存储
- [ ] 上传同名文件时,删除旧版本文件
- [ ] EC可用读写数量判断
- [ ] 小文件存储到metafile, inlinedata
- [ ] 错误类型判断,程序中判断错误类型,如何统一错误
- [ ] 优化并发执行
- [ ] 抽象出metafile存储
- [ ] 代码优化
- [ ] 上传同名文件时,删除旧版本文件
- [ ] EC可用读写数量判断
- [ ] 小文件存储到metafile, inlinedata
- [ ] 错误类型判断,程序中判断错误类型,如何统一错误
- [ ] 优化并发执行
- [ ] 抽象出metafile存储
- [ ] 代码优化
## 基础功能
- [ ] 桶操作
- [x] 创建 CreateBucket
- [x] 列表 ListBuckets
- [ ] 桶下面的文件列表 ListObjects
- [x] 详情 HeadBucket
- [ ] 删除
- [ ] 桶操作
- [x] 创建 CreateBucket
- [x] 列表 ListBuckets
- [ ] 桶下面的文件列表 ListObjects
- [x] 详情 HeadBucket
- [ ] 删除
- [ ] 文件操作
- [x] 上传 PutObject
- [ ] 大文件上传
@@ -28,10 +28,10 @@
- [x] 下载 GetObject
- [ ] 复制 CopyObject
- [ ] 详情 HeadObject
- [ ] 删除
- [ ] 删除
## 扩展功能
- [ ] 版本控制
- [ ] 对象锁
- [ ] 修复
- [ ] 修复

View File

@@ -169,7 +169,11 @@ impl StorageAPI for Sets {
async fn new_multipart_upload(&self, bucket: &str, object: &str, opts: &ObjectOptions) -> Result<MultipartUploadResult> {
self.get_disks_by_key(object).new_multipart_upload(bucket, object, opts).await
}
async fn abort_multipart_upload(&self, bucket: &str, object: &str, upload_id: &str, opts: &ObjectOptions) -> Result<()> {
self.get_disks_by_key(object)
.abort_multipart_upload(bucket, object, upload_id, opts)
.await
}
async fn complete_multipart_upload(
&self,
bucket: &str,

View File

@@ -217,6 +217,13 @@ impl StorageAPI for ECStore {
}
unimplemented!()
}
async fn abort_multipart_upload(&self, bucket: &str, object: &str, upload_id: &str, opts: &ObjectOptions) -> Result<()> {
if self.single_pool() {
return self.pools[0].abort_multipart_upload(bucket, object, upload_id, opts).await;
}
unimplemented!()
}
async fn complete_multipart_upload(
&self,
bucket: &str,

View File

@@ -448,6 +448,7 @@ pub trait StorageAPI {
opts: &ObjectOptions,
) -> Result<PartInfo>;
async fn new_multipart_upload(&self, bucket: &str, object: &str, opts: &ObjectOptions) -> Result<MultipartUploadResult>;
async fn abort_multipart_upload(&self, bucket: &str, object: &str, upload_id: &str, opts: &ObjectOptions) -> Result<()>;
async fn complete_multipart_upload(
&self,
bucket: &str,

View File

@@ -433,8 +433,18 @@ impl S3 for FS {
#[tracing::instrument(level = "debug", skip(self))]
async fn abort_multipart_upload(
&self,
_req: S3Request<AbortMultipartUploadInput>,
req: S3Request<AbortMultipartUploadInput>,
) -> S3Result<S3Response<AbortMultipartUploadOutput>> {
let AbortMultipartUploadInput {
bucket, key, upload_id, ..
} = req.input;
let opts = &ObjectOptions::default();
try_!(
self.store
.abort_multipart_upload(bucket.as_str(), key.as_str(), upload_id.as_str(), opts)
.await
);
Ok(S3Response::new(AbortMultipartUploadOutput { ..Default::default() }))
}
}