From 46f2afd293d84dd6197c643d02d3a5426de5c544 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Thu, 12 May 2016 13:08:31 -0700 Subject: [PATCH] Interrupt retry Sleep() on client connection shutdown Otherwise transportMonitor hangs around long enough after Close() that it looks like a goroutine leak. --- clientconn.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/clientconn.go b/clientconn.go index 6de86e9e..ebf99023 100644 --- a/clientconn.go +++ b/clientconn.go @@ -491,7 +491,10 @@ func (cc *Conn) resetTransport(closeTransport bool) error { return ErrClientConnTimeout } closeTransport = false - time.Sleep(sleepTime) + select { + case <-time.After(sleepTime): + case <-cc.shutdownChan: + } retries++ grpclog.Printf("grpc: Conn.resetTransport failed to create client transport: %v; Reconnecting to %q", err, cc.target) continue