diff --git a/pkg/fab/comm/connector.go b/pkg/fab/comm/connector.go index 7537ba24cf..d6fc04dbc9 100644 --- a/pkg/fab/comm/connector.go +++ b/pkg/fab/comm/connector.go @@ -124,11 +124,12 @@ func (cc *CachingConnector) DialContext(ctx context.Context, target string, opts cc.lock.Unlock() - if err := cc.openConn(ctx, c); err != nil { + if err = cc.openConn(ctx, c); err != nil { cc.lock.Lock() - setClosed(c) + setClosed(c, err) cc.removeConn(c) cc.lock.Unlock() + return nil, errors.WithMessagef(err, "dialing connection on target [%s]", target) } return c.conn, nil @@ -160,7 +161,7 @@ func (cc *CachingConnector) ReleaseConn(conn *grpc.ClientConn) { } logger.Debugf("ReleaseConn [%s]", cconn.target) - setClosed(cconn) + setClosed(cconn, nil) cc.ensureJanitorStarted() } @@ -342,9 +343,12 @@ func closeConn(conn *grpc.ClientConn) { cancel() } -func setClosed(cconn *cachedConn) { +func setClosed(cconn *cachedConn, err error) { if cconn.open > 0 { - cconn.lastClose = time.Now() + if err == nil { + cconn.lastClose = time.Now() + } + cconn.open-- } }