aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-03-29 19:53:12 +0500
committerKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-03-29 19:53:12 +0500
commit993283bb1dd91d80aad9bc992b35505ec1ad06a0 (patch)
treedac69edf2d4e7abf3245626b0c9473009f27bf2a
parent5b90a39954ebe159f9b7b1df7bb2bcb9263a714b (diff)
downloadseaweedfs-993283bb1dd91d80aad9bc992b35505ec1ad06a0.tar.xz
seaweedfs-993283bb1dd91d80aad9bc992b35505ec1ad06a0.zip
revert sort.Search
-rw-r--r--weed/s3api/filer_multipart.go19
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) {