From 2aebcaa02e91f28f66e85396110130f8a67a7c77 Mon Sep 17 00:00:00 2001 From: Doug Fawley Date: Thu, 3 Oct 2019 14:28:26 -0700 Subject: [PATCH] fire firstResolveEvent when done updating resolver state --- balancer_conn_wrappers.go | 1 - clientconn.go | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/balancer_conn_wrappers.go b/balancer_conn_wrappers.go index 7dd437e7f5c..8a5b89bc39b 100644 --- a/balancer_conn_wrappers.go +++ b/balancer_conn_wrappers.go @@ -140,7 +140,6 @@ func (ccb *ccBalancerWrapper) watcher() { ccb.UpdateBalancerState(connectivity.Connecting, nil) return } - ccb.cc.firstResolveEvent.Fire() } } diff --git a/clientconn.go b/clientconn.go index e5c31208f1d..17e51a37427 100644 --- a/clientconn.go +++ b/clientconn.go @@ -556,6 +556,7 @@ func (cc *ClientConn) maybeApplyDefaultServiceConfig(addrs []resolver.Address) { } func (cc *ClientConn) updateResolverState(s resolver.State, err error) error { + defer cc.firstResolveEvent.Fire() cc.mu.Lock() // Check if the ClientConn is already closed. Some fields (e.g. // balancerWrapper) are set to nil when closing the ClientConn, and could @@ -600,7 +601,6 @@ func (cc *ClientConn) updateResolverState(s resolver.State, err error) error { cc.blockingpicker.updatePicker(base.NewErrPicker(err)) cc.csMgr.updateState(connectivity.TransientFailure) cc.mu.Unlock() - cc.firstResolveEvent.Fire() return ret } }