mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-04-05 20:52:50 +08:00
add retry to master clients also
This commit is contained in:
parent
004aa9ca5d
commit
7192a378cc
@ -9,13 +9,18 @@ import (
|
|||||||
|
|
||||||
func Retry(name string, waitTimeLimit time.Duration, job func() error) (err error) {
|
func Retry(name string, waitTimeLimit time.Duration, job func() error) (err error) {
|
||||||
waitTime := time.Second
|
waitTime := time.Second
|
||||||
|
hasErr := false
|
||||||
for waitTime < waitTimeLimit {
|
for waitTime < waitTimeLimit {
|
||||||
err = job()
|
err = job()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
if hasErr {
|
||||||
|
glog.V(0).Infof("retry %s successfully", name)
|
||||||
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if strings.Contains(err.Error(), "transport: ") {
|
if strings.Contains(err.Error(), "transport") {
|
||||||
glog.V(1).Infof("retry %s", name)
|
hasErr = true
|
||||||
|
glog.V(0).Infof("retry %s", name)
|
||||||
time.Sleep(waitTime)
|
time.Sleep(waitTime)
|
||||||
waitTime += waitTime / 2
|
waitTime += waitTime / 2
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,8 @@ import (
|
|||||||
"math/rand"
|
"math/rand"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/filer"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/util"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
|
|
||||||
"github.com/chrislusf/seaweedfs/weed/glog"
|
"github.com/chrislusf/seaweedfs/weed/glog"
|
||||||
@ -150,10 +152,12 @@ func (mc *MasterClient) tryConnectToMaster(master string) (nextHintedLeader stri
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (mc *MasterClient) WithClient(fn func(client master_pb.SeaweedClient) error) error {
|
func (mc *MasterClient) WithClient(fn func(client master_pb.SeaweedClient) error) error {
|
||||||
for mc.currentMaster == "" {
|
return util.Retry("master grpc", filer.ReadWaitTime, func() error {
|
||||||
time.Sleep(3 * time.Second)
|
for mc.currentMaster == "" {
|
||||||
}
|
time.Sleep(3 * time.Second)
|
||||||
return pb.WithMasterClient(mc.currentMaster, mc.grpcDialOption, func(client master_pb.SeaweedClient) error {
|
}
|
||||||
return fn(client)
|
return pb.WithMasterClient(mc.currentMaster, mc.grpcDialOption, func(client master_pb.SeaweedClient) error {
|
||||||
|
return fn(client)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user