diff options
| author | hilimd <68371223+hilimd@users.noreply.github.com> | 2020-11-05 12:02:47 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-05 12:02:47 +0800 |
| commit | 546f1bcb903dd26ba447cdbedb972736fdb31b42 (patch) | |
| tree | 09b8119faa7162acaa7240de5af6fd0bebe96c2f /weed/util/retry.go | |
| parent | 843865f2ca534bb6286b7a3d79c436384d875608 (diff) | |
| parent | 75887ba2a20b9f3f7ff9c4b8998cf3af0c0f48c2 (diff) | |
| download | seaweedfs-546f1bcb903dd26ba447cdbedb972736fdb31b42.tar.xz seaweedfs-546f1bcb903dd26ba447cdbedb972736fdb31b42.zip | |
Merge pull request #34 from chrislusf/master
sync
Diffstat (limited to 'weed/util/retry.go')
| -rw-r--r-- | weed/util/retry.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/weed/util/retry.go b/weed/util/retry.go new file mode 100644 index 000000000..faaab0351 --- /dev/null +++ b/weed/util/retry.go @@ -0,0 +1,31 @@ +package util + +import ( + "strings" + "time" + + "github.com/chrislusf/seaweedfs/weed/glog" +) + +var RetryWaitTime = 6 * time.Second + +func Retry(name string, job func() error) (err error) { + waitTime := time.Second + hasErr := false + for waitTime < RetryWaitTime { + err = job() + if err == nil { + if hasErr { + glog.V(0).Infof("retry %s successfully", name) + } + break + } + if strings.Contains(err.Error(), "transport") { + hasErr = true + glog.V(0).Infof("retry %s", name) + time.Sleep(waitTime) + waitTime += waitTime / 2 + } + } + return err +} |
