From a1d4c283c6bcd51bb1162a0eb0b59ad1dd4b7a56 Mon Sep 17 00:00:00 2001 From: Doug Fawley Date: Mon, 10 Jun 2019 16:58:43 -0700 Subject: [PATCH] client: update state earlier to prevent resetTransport calls from killing good transports (#2862) --- clientconn.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/clientconn.go b/clientconn.go index 7ed19711d508..ebcd64f33a4c 100644 --- a/clientconn.go +++ b/clientconn.go @@ -735,6 +735,9 @@ func (ac *addrConn) connect() error { ac.mu.Unlock() return nil } + // Update connectivity state within the lock to prevent subsequent or + // concurrent calls from resetting the transport more than once. + ac.updateConnectivityState(connectivity.Connecting) ac.mu.Unlock() // Start a goroutine connecting to the server asynchronously.