aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-04-27 19:27:44 +0500
committerKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-04-27 19:27:44 +0500
commit306cf70c4a81d068e63bc6968570797b2909207f (patch)
tree85563210b47e4b97d8668a9a7b773317fa78acb7
parent70e5a1b632cafe39379e2c2d91611480efade4bf (diff)
downloadseaweedfs-306cf70c4a81d068e63bc6968570797b2909207f.tar.xz
seaweedfs-306cf70c4a81d068e63bc6968570797b2909207f.zip
avoid empty listMultipartUploads response
-rw-r--r--weed/s3api/filer_multipart.go14
1 files changed, 9 insertions, 5 deletions
diff --git a/weed/s3api/filer_multipart.go b/weed/s3api/filer_multipart.go
index 659cf4c96..e62d31690 100644
--- a/weed/s3api/filer_multipart.go
+++ b/weed/s3api/filer_multipart.go
@@ -6,6 +6,7 @@ import (
"fmt"
"github.com/chrislusf/seaweedfs/weed/s3api/s3err"
"golang.org/x/exp/slices"
+ "math"
"path/filepath"
"sort"
"strconv"
@@ -242,13 +243,13 @@ func (s3a *S3ApiServer) listMultipartUploads(input *s3.ListMultipartUploadsInput
Prefix: input.Prefix,
}
- entries, isLast, err := s3a.list(s3a.genUploadsFolder(*input.Bucket), "", *input.UploadIdMarker, false, uint32(*input.MaxUploads))
+ entries, _, err := s3a.list(s3a.genUploadsFolder(*input.Bucket), "", *input.UploadIdMarker, false, math.MaxInt32)
if err != nil {
glog.Errorf("listMultipartUploads %s error: %v", *input.Bucket, err)
return
}
- output.IsTruncated = aws.Bool(!isLast)
+ uploadsCount := int64(0)
for _, entry := range entries {
if entry.Extended != nil {
key := string(entry.Extended["key"])
@@ -262,9 +263,12 @@ func (s3a *S3ApiServer) listMultipartUploads(input *s3.ListMultipartUploadsInput
Key: objectKey(aws.String(key)),
UploadId: aws.String(entry.Name),
})
- if !isLast {
- output.NextUploadIdMarker = aws.String(entry.Name)
- }
+ uploadsCount += 1
+ }
+ if uploadsCount >= *input.MaxUploads {
+ output.IsTruncated = aws.Bool(true)
+ output.NextUploadIdMarker = aws.String(entry.Name)
+ break
}
}