aboutsummaryrefslogtreecommitdiff
path: root/weed/util/retry.go
diff options
context:
space:
mode:
authorhilimd <68371223+hilimd@users.noreply.github.com>2020-11-05 12:02:47 +0800
committerGitHub <noreply@github.com>2020-11-05 12:02:47 +0800
commit546f1bcb903dd26ba447cdbedb972736fdb31b42 (patch)
tree09b8119faa7162acaa7240de5af6fd0bebe96c2f /weed/util/retry.go
parent843865f2ca534bb6286b7a3d79c436384d875608 (diff)
parent75887ba2a20b9f3f7ff9c4b8998cf3af0c0f48c2 (diff)
downloadseaweedfs-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.go31
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
+}