aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-10-10 16:02:39 -0700
committerChris Lu <chris.lu@gmail.com>2020-10-10 16:02:39 -0700
commit8a52379ecb8a11eb7fa096392ab87d222d6892ae (patch)
tree0707590cf449dbc6e5cb8e1fe872c378aa9488d6
parent70af0ec24c795ef26e9d85813b9b8eecc22d73c5 (diff)
downloadseaweedfs-8a52379ecb8a11eb7fa096392ab87d222d6892ae.tar.xz
seaweedfs-8a52379ecb8a11eb7fa096392ab87d222d6892ae.zip
add retry if volume can not be found
-rw-r--r--weed/filer/reader_at.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/weed/filer/reader_at.go b/weed/filer/reader_at.go
index 461ef2b2c..4d0cde850 100644
--- a/weed/filer/reader_at.go
+++ b/weed/filer/reader_at.go
@@ -11,6 +11,7 @@ import (
"io"
"math/rand"
"sync"
+ "time"
)
type ChunkReadAt struct {
@@ -37,7 +38,8 @@ func LookupFn(filerClient filer_pb.FilerClient) LookupFileIdFunctionType {
vid := VolumeId(fileId)
locations, found := vidCache[vid]
- if !found {
+ waitTime := time.Second
+ for !found && waitTime < 6*time.Second {
// println("looking up volume", vid)
err = filerClient.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error {
resp, err := client.LookupVolume(context.Background(), &filer_pb.LookupVolumeRequest{
@@ -56,6 +58,12 @@ func LookupFn(filerClient filer_pb.FilerClient) LookupFileIdFunctionType {
return nil
})
+ if err == nil {
+ break
+ }
+ glog.V(1).Infof("wait for volume %s", vid)
+ time.Sleep(waitTime)
+ waitTime += waitTime / 2
}
if err != nil {