Browse Source

Unable to upload empty files to seaweed via. multipart when length is unknown (#6729)

pull/6822/head
royatwp 3 weeks ago
committed by GitHub
parent
commit
2786bea839
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 6
      weed/s3api/filer_multipart.go

6
weed/s3api/filer_multipart.go

@ -84,11 +84,15 @@ func (s3a *S3ApiServer) completeMultipartUpload(input *s3.CompleteMultipartUploa
} }
completedPartNumbers := []int{} completedPartNumbers := []int{}
completedPartMap := make(map[int][]string) completedPartMap := make(map[int][]string)
maxPartNo := 1
for _, part := range parts.Parts { for _, part := range parts.Parts {
if _, ok := completedPartMap[part.PartNumber]; !ok { if _, ok := completedPartMap[part.PartNumber]; !ok {
completedPartNumbers = append(completedPartNumbers, part.PartNumber) completedPartNumbers = append(completedPartNumbers, part.PartNumber)
} }
completedPartMap[part.PartNumber] = append(completedPartMap[part.PartNumber], part.ETag) completedPartMap[part.PartNumber] = append(completedPartMap[part.PartNumber], part.ETag)
maxPartNo = max(maxPartNo, part.PartNumber)
} }
sort.Ints(completedPartNumbers) sort.Ints(completedPartNumbers)
@ -156,7 +160,7 @@ func (s3a *S3ApiServer) completeMultipartUpload(input *s3.CompleteMultipartUploa
glog.Warningf("invalid complete etag %s, partEtag %s", partETag, entryETag) glog.Warningf("invalid complete etag %s, partEtag %s", partETag, entryETag)
stats.S3HandlerCounter.WithLabelValues(stats.ErrorCompletedEtagInvalid).Inc() stats.S3HandlerCounter.WithLabelValues(stats.ErrorCompletedEtagInvalid).Inc()
} }
if len(entry.Chunks) == 0 {
if len(entry.Chunks) == 0 && partNumber != maxPartNo {
glog.Warningf("completeMultipartUpload %s empty chunks", entry.Name) glog.Warningf("completeMultipartUpload %s empty chunks", entry.Name)
stats.S3HandlerCounter.WithLabelValues(stats.ErrorCompletedPartEmpty).Inc() stats.S3HandlerCounter.WithLabelValues(stats.ErrorCompletedPartEmpty).Inc()
continue continue

Loading…
Cancel
Save