You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

20 lines
368 B

  1. package util
  2. import (
  3. "time"
  4. "github.com/chrislusf/seaweedfs/weed/glog"
  5. )
  6. func Retry(name string, waitTimeLimit time.Duration, job func() error) (err error) {
  7. waitTime := time.Second
  8. for waitTime < waitTimeLimit {
  9. err = job()
  10. if err == nil {
  11. break
  12. }
  13. glog.V(1).Infof("retry %s", name)
  14. time.Sleep(waitTime)
  15. waitTime += waitTime / 2
  16. }
  17. return err
  18. }