From 6cf2e7d49300b96263845337aa0b64a54e21e094 Mon Sep 17 00:00:00 2001 From: chrislu Date: Thu, 3 Feb 2022 12:34:16 -0800 Subject: [PATCH] s3: listObjectParts return ErrNoSuchUpload if does not exist ubuntu@prod-master-1:~$ aws --endpoint http://10.244.15.66:8333 s3api abort-multipart-upload --bucket prod-cache --key multipart-test --upload-id 5347f936-6adc-43de-8e5c-1fd137c3b2bc ubuntu@prod-master-1:~$ aws --endpoint http://10.244.15.66:8333 s3api list-parts --bucket prod-cache --key multipart-test --upload-id 5347f936-6adc-43de-8e5c-1fd137c3b2bc { "Initiator": null, "Owner": null, "StorageClass": "STANDARD" } If we abort a multipart upload, it appears that records are left behind. We should get a 404 NoSuchKey error. --- weed/s3api/filer_multipart.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/weed/s3api/filer_multipart.go b/weed/s3api/filer_multipart.go index 1795ade93..e687fba10 100644 --- a/weed/s3api/filer_multipart.go +++ b/weed/s3api/filer_multipart.go @@ -270,6 +270,10 @@ func (s3a *S3ApiServer) listObjectParts(input *s3.ListPartsInput) (output *ListP glog.Errorf("listObjectParts %s %s error: %v", *input.Bucket, *input.UploadId, err) return nil, s3err.ErrNoSuchUpload } + if len(entries) == 0 { + glog.Errorf("listObjectParts %s %s not found", *input.Bucket, *input.UploadId) + return nil, s3err.ErrNoSuchUpload + } output.IsTruncated = aws.Bool(!isLast)