mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-19 02:56:18 +00:00
test:abort_multipart_upload
This commit is contained in:
@@ -2,22 +2,22 @@
|
|||||||
|
|
||||||
## 基础存储
|
## 基础存储
|
||||||
|
|
||||||
- [ ] 上传同名文件时,删除旧版本文件
|
- [ ] 上传同名文件时,删除旧版本文件
|
||||||
- [ ] EC可用读写数量判断
|
- [ ] EC可用读写数量判断
|
||||||
- [ ] 小文件存储到metafile, inlinedata
|
- [ ] 小文件存储到metafile, inlinedata
|
||||||
- [ ] 错误类型判断,程序中判断错误类型,如何统一错误
|
- [ ] 错误类型判断,程序中判断错误类型,如何统一错误
|
||||||
- [ ] 优化并发执行
|
- [ ] 优化并发执行
|
||||||
- [ ] 抽象出metafile存储
|
- [ ] 抽象出metafile存储
|
||||||
- [ ] 代码优化
|
- [ ] 代码优化
|
||||||
|
|
||||||
## 基础功能
|
## 基础功能
|
||||||
|
|
||||||
- [ ] 桶操作
|
- [ ] 桶操作
|
||||||
- [x] 创建 CreateBucket
|
- [x] 创建 CreateBucket
|
||||||
- [x] 列表 ListBuckets
|
- [x] 列表 ListBuckets
|
||||||
- [ ] 桶下面的文件列表 ListObjects
|
- [ ] 桶下面的文件列表 ListObjects
|
||||||
- [x] 详情 HeadBucket
|
- [x] 详情 HeadBucket
|
||||||
- [ ] 删除
|
- [ ] 删除
|
||||||
- [ ] 文件操作
|
- [ ] 文件操作
|
||||||
- [x] 上传 PutObject
|
- [x] 上传 PutObject
|
||||||
- [ ] 大文件上传
|
- [ ] 大文件上传
|
||||||
@@ -28,10 +28,10 @@
|
|||||||
- [x] 下载 GetObject
|
- [x] 下载 GetObject
|
||||||
- [ ] 复制 CopyObject
|
- [ ] 复制 CopyObject
|
||||||
- [ ] 详情 HeadObject
|
- [ ] 详情 HeadObject
|
||||||
- [ ] 删除
|
- [ ] 删除
|
||||||
|
|
||||||
## 扩展功能
|
## 扩展功能
|
||||||
|
|
||||||
- [ ] 版本控制
|
- [ ] 版本控制
|
||||||
- [ ] 对象锁
|
- [ ] 对象锁
|
||||||
- [ ] 修复
|
- [ ] 修复
|
||||||
|
|||||||
+5
-1
@@ -169,7 +169,11 @@ impl StorageAPI for Sets {
|
|||||||
async fn new_multipart_upload(&self, bucket: &str, object: &str, opts: &ObjectOptions) -> Result<MultipartUploadResult> {
|
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
|
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(
|
async fn complete_multipart_upload(
|
||||||
&self,
|
&self,
|
||||||
bucket: &str,
|
bucket: &str,
|
||||||
|
|||||||
@@ -217,6 +217,13 @@ impl StorageAPI for ECStore {
|
|||||||
}
|
}
|
||||||
unimplemented!()
|
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(
|
async fn complete_multipart_upload(
|
||||||
&self,
|
&self,
|
||||||
bucket: &str,
|
bucket: &str,
|
||||||
|
|||||||
@@ -448,6 +448,7 @@ pub trait StorageAPI {
|
|||||||
opts: &ObjectOptions,
|
opts: &ObjectOptions,
|
||||||
) -> Result<PartInfo>;
|
) -> Result<PartInfo>;
|
||||||
async fn new_multipart_upload(&self, bucket: &str, object: &str, opts: &ObjectOptions) -> Result<MultipartUploadResult>;
|
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(
|
async fn complete_multipart_upload(
|
||||||
&self,
|
&self,
|
||||||
bucket: &str,
|
bucket: &str,
|
||||||
|
|||||||
@@ -433,8 +433,18 @@ impl S3 for FS {
|
|||||||
#[tracing::instrument(level = "debug", skip(self))]
|
#[tracing::instrument(level = "debug", skip(self))]
|
||||||
async fn abort_multipart_upload(
|
async fn abort_multipart_upload(
|
||||||
&self,
|
&self,
|
||||||
_req: S3Request<AbortMultipartUploadInput>,
|
req: S3Request<AbortMultipartUploadInput>,
|
||||||
) -> S3Result<S3Response<AbortMultipartUploadOutput>> {
|
) -> 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() }))
|
Ok(S3Response::new(AbortMultipartUploadOutput { ..Default::default() }))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user