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.

23 lines
438 B

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