aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-07-15 16:05:35 +0500
committerKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-07-15 16:05:35 +0500
commit7b1497ee63ce4126236d08ab54d9d6e22e43556d (patch)
treea975c601ea636029ff0b3b0beb3c6989489148d8
parent01996bccf8ca8cc285e95b55633a501516668a6f (diff)
downloadseaweedfs-7b1497ee63ce4126236d08ab54d9d6e22e43556d.tar.xz
seaweedfs-7b1497ee63ce4126236d08ab54d9d6e22e43556d.zip
Use BackoffSchedule for getLookupFileId
-rw-r--r--weed/filer/stream.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/weed/filer/stream.go b/weed/filer/stream.go
index 71808017e..d1b66e88d 100644
--- a/weed/filer/stream.go
+++ b/weed/filer/stream.go
@@ -18,6 +18,12 @@ import (
"github.com/chrislusf/seaweedfs/weed/wdclient"
)
+var getLookupFileIdBackoffSchedule = []time.Duration{
+ 150 * time.Millisecond,
+ 600 * time.Millisecond,
+ 1800 * time.Millisecond,
+}
+
func HasData(entry *filer_pb.Entry) bool {
if len(entry.Content) > 0 {
@@ -69,7 +75,15 @@ func StreamContent(masterClient wdclient.HasLookupFileIdFunction, writer io.Writ
fileId2Url := make(map[string][]string)
for _, chunkView := range chunkViews {
- urlStrings, err := masterClient.GetLookupFileIdFunction()(chunkView.FileId)
+ var urlStrings []string
+ var err error
+ for _, backoff := range getLookupFileIdBackoffSchedule {
+ urlStrings, err = masterClient.GetLookupFileIdFunction()(chunkView.FileId)
+ if err == nil && len(urlStrings) > 0 {
+ time.Sleep(backoff)
+ break
+ }
+ }
if err != nil {
glog.V(1).Infof("operation LookupFileId %s failed, err: %v", chunkView.FileId, err)
return err