diff --git a/discovery/discovery.go b/discovery/discovery.go index 3c06d3c7c..edc842ffb 100644 --- a/discovery/discovery.go +++ b/discovery/discovery.go @@ -52,7 +52,8 @@ var ( var ( // Number of retries discovery will attempt before giving up and erroring out. - nRetries = uint(math.MaxUint32) + nRetries = uint(math.MaxUint32) + maxExpoentialRetries = uint(8) ) // JoinCluster will connect to the discovery service at the given url, and @@ -268,9 +269,14 @@ func (d *discovery) checkCluster() ([]*client.Node, int, uint64, error) { func (d *discovery) logAndBackoffForRetry(step string) { d.retries++ - retryTime := time.Second * (0x1 << d.retries) - plog.Infof("%s: error connecting to %s, retrying in %s", step, d.url, retryTime) - d.clock.Sleep(retryTime) + // logAndBackoffForRetry stops exponential backoff when the retries are more than maxExpoentialRetries and is set to a constant backoff afterward. + retries := d.retries + if retries > maxExpoentialRetries { + retries = maxExpoentialRetries + } + retryTimeInSecond := time.Duration(0x1<