diff options
| author | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2022-03-29 19:53:12 +0500 |
|---|---|---|
| committer | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2022-03-29 19:53:12 +0500 |
| commit | 993283bb1dd91d80aad9bc992b35505ec1ad06a0 (patch) | |
| tree | dac69edf2d4e7abf3245626b0c9473009f27bf2a | |
| parent | 5b90a39954ebe159f9b7b1df7bb2bcb9263a714b (diff) | |
| download | seaweedfs-993283bb1dd91d80aad9bc992b35505ec1ad06a0.tar.xz seaweedfs-993283bb1dd91d80aad9bc992b35505ec1ad06a0.zip | |
revert sort.Search
| -rw-r--r-- | weed/s3api/filer_multipart.go | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/weed/s3api/filer_multipart.go b/weed/s3api/filer_multipart.go index 54067f8f2..64ce16b45 100644 --- a/weed/s3api/filer_multipart.go +++ b/weed/s3api/filer_multipart.go @@ -175,16 +175,21 @@ func findByPartNumber(fileName string, parts []CompletedPart) (etag string, foun if formatErr != nil { return } - foundParts := []int{} - for i, part := range parts { + x := sort.Search(len(parts), func(i int) bool { + return parts[i].PartNumber >= partNumber + }) + if parts[x].PartNumber != partNumber { + return + } + y := 0 + for i, part := range parts[x:] { if part.PartNumber == partNumber { - foundParts = append(foundParts, i) + y = i + } else { + break } } - if len(foundParts) == 0 { - return - } - return parts[foundParts[len(foundParts)-1]].ETag, true + return parts[x+y].ETag, true } func (s3a *S3ApiServer) abortMultipartUpload(input *s3.AbortMultipartUploadInput) (output *s3.AbortMultipartUploadOutput, code s3err.ErrorCode) { |
