From 63ab5addfadf9630e6dac9a0b16bba6692977163 Mon Sep 17 00:00:00 2001 From: Xiang Date: Sun, 22 Oct 2017 01:30:05 -0700 Subject: [PATCH] clientv3: do not mark stale endpoints as unhealthy --- clientv3/health_balancer.go | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/clientv3/health_balancer.go b/clientv3/health_balancer.go index d1846b151..5a4836ade 100644 --- a/clientv3/health_balancer.go +++ b/clientv3/health_balancer.go @@ -143,13 +143,6 @@ func (hb *healthBalancer) updateUnhealthy(timeout time.Duration) { case <-time.After(timeout): hb.mu.Lock() for k, v := range hb.unhealthy { - if _, ok := hb.hostPort2ep[k]; !ok { - delete(hb.unhealthy, k) - if logger.V(4) { - logger.Infof("clientv3/health-balancer: removes stale host:port %q from unhealthy", k) - } - continue - } if time.Since(v) > timeout { delete(hb.unhealthy, k) if logger.V(4) { @@ -187,11 +180,13 @@ func (hb *healthBalancer) liveAddrs() []grpc.Address { func (hb *healthBalancer) hostPortError(hostPort string, err error) { hb.mu.Lock() - hb.unhealthy[hostPort] = time.Now() - hb.mu.Unlock() - if logger.V(4) { - logger.Infof("clientv3/health-balancer: marking %q as unhealthy (%q)", hostPort, err.Error()) + if _, ok := hb.hostPort2ep[hostPort]; ok { + hb.unhealthy[hostPort] = time.Now() + if logger.V(4) { + logger.Infof("clientv3/health-balancer: marking %q as unhealthy (%q)", hostPort, err.Error()) + } } + hb.mu.Unlock() } func (hb *healthBalancer) mayPin(addr grpc.Address) bool {