|
@@ -221,7 +221,8 @@ func (d *discovery) checkCluster() ([]*client.Node, int, uint64, error) {
|
|
|
if err == client.ErrInvalidJSON {
|
|
if err == client.ErrInvalidJSON {
|
|
|
return nil, 0, 0, ErrBadDiscoveryEndpoint
|
|
return nil, 0, 0, ErrBadDiscoveryEndpoint
|
|
|
}
|
|
}
|
|
|
- if err == context.DeadlineExceeded {
|
|
|
|
|
|
|
+ if ce, ok := err.(*client.ClusterError); ok {
|
|
|
|
|
+ plog.Error(ce.Detail())
|
|
|
return d.checkClusterRetry()
|
|
return d.checkClusterRetry()
|
|
|
}
|
|
}
|
|
|
return nil, 0, 0, err
|
|
return nil, 0, 0, err
|
|
@@ -235,7 +236,8 @@ func (d *discovery) checkCluster() ([]*client.Node, int, uint64, error) {
|
|
|
resp, err = d.c.Get(ctx, d.cluster, nil)
|
|
resp, err = d.c.Get(ctx, d.cluster, nil)
|
|
|
cancel()
|
|
cancel()
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- if err == context.DeadlineExceeded {
|
|
|
|
|
|
|
+ if ce, ok := err.(*client.ClusterError); ok {
|
|
|
|
|
+ plog.Error(ce.Detail())
|
|
|
return d.checkClusterRetry()
|
|
return d.checkClusterRetry()
|
|
|
}
|
|
}
|
|
|
return nil, 0, 0, err
|
|
return nil, 0, 0, err
|
|
@@ -266,7 +268,7 @@ func (d *discovery) checkCluster() ([]*client.Node, int, uint64, error) {
|
|
|
func (d *discovery) logAndBackoffForRetry(step string) {
|
|
func (d *discovery) logAndBackoffForRetry(step string) {
|
|
|
d.retries++
|
|
d.retries++
|
|
|
retryTime := time.Second * (0x1 << d.retries)
|
|
retryTime := time.Second * (0x1 << d.retries)
|
|
|
- plog.Infof("%s: connection to %s timed out, retrying in %s", step, d.url, retryTime)
|
|
|
|
|
|
|
+ plog.Infof("%s: error connecting to %s, retrying in %s", step, d.url, retryTime)
|
|
|
d.clock.Sleep(retryTime)
|
|
d.clock.Sleep(retryTime)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -311,7 +313,8 @@ func (d *discovery) waitNodes(nodes []*client.Node, size int, index uint64) ([]*
|
|
|
plog.Noticef("found %d peer(s), waiting for %d more", len(all), size-len(all))
|
|
plog.Noticef("found %d peer(s), waiting for %d more", len(all), size-len(all))
|
|
|
resp, err := w.Next(context.Background())
|
|
resp, err := w.Next(context.Background())
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- if err == context.DeadlineExceeded {
|
|
|
|
|
|
|
+ if ce, ok := err.(*client.ClusterError); ok {
|
|
|
|
|
+ plog.Error(ce.Detail())
|
|
|
return d.waitNodesRetry()
|
|
return d.waitNodesRetry()
|
|
|
}
|
|
}
|
|
|
return nil, err
|
|
return nil, err
|