From c2b894276992e8b3a879945d3eb9ff303fe47c74 Mon Sep 17 00:00:00 2001 From: Numblgw <44025291+Numblgw@users.noreply.github.com> Date: Tue, 18 Feb 2025 07:46:31 +0800 Subject: [PATCH] stop retry when all nodes have tried it (#6551) Co-authored-by: liguowei --- weed/filer/filechunk_manifest.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/weed/filer/filechunk_manifest.go b/weed/filer/filechunk_manifest.go index e9ae1800c..36096d2c1 100644 --- a/weed/filer/filechunk_manifest.go +++ b/weed/filer/filechunk_manifest.go @@ -130,7 +130,9 @@ func retriedStreamFetchChunkData(writer io.Writer, urlStrings []string, jwt stri var totalWritten int for waitTime := time.Second; waitTime < util.RetryWaitTime; waitTime += waitTime / 2 { + retriedCnt := 0 for _, urlString := range urlStrings { + retriedCnt++ var localProcessed int var writeErr error shouldRetry, err = util_http.ReadUrlAsStreamAuthenticated(urlString+"?readDeleted=true", jwt, cipherKey, isGzipped, isFullChunk, offset, size, func(data []byte) { @@ -161,6 +163,10 @@ func retriedStreamFetchChunkData(writer io.Writer, urlStrings []string, jwt stri break } } + // all nodes have tried it + if retriedCnt == len(urlStrings) { + break + } if err != nil && shouldRetry { glog.V(0).Infof("retry reading in %v", waitTime) time.Sleep(waitTime)