From 993283bb1dd91d80aad9bc992b35505ec1ad06a0 Mon Sep 17 00:00:00 2001 From: Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> Date: Tue, 29 Mar 2022 19:53:12 +0500 Subject: [PATCH] revert sort.Search --- weed/s3api/filer_multipart.go | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 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 { - if part.PartNumber == partNumber { - foundParts = append(foundParts, i) - } - } - if len(foundParts) == 0 { + x := sort.Search(len(parts), func(i int) bool { + return parts[i].PartNumber >= partNumber + }) + if parts[x].PartNumber != partNumber { return } - return parts[foundParts[len(foundParts)-1]].ETag, true + y := 0 + for i, part := range parts[x:] { + if part.PartNumber == partNumber { + y = i + } else { + break + } + } + return parts[x+y].ETag, true } func (s3a *S3ApiServer) abortMultipartUpload(input *s3.AbortMultipartUploadInput) (output *s3.AbortMultipartUploadOutput, code s3err.ErrorCode) {