resetTransport: log all transient errors when they occur
Previously, cancellation of the context would cause these transient errors to be swallowed since the function would return before the log line was reached.
This commit is contained in:
@ -609,8 +609,7 @@ func (ac *addrConn) waitForStateChange(ctx context.Context, sourceState Connecti
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ac *addrConn) resetTransport(closeTransport bool) error {
|
func (ac *addrConn) resetTransport(closeTransport bool) error {
|
||||||
var retries int
|
for retries := 0; ; retries++ {
|
||||||
for {
|
|
||||||
ac.mu.Lock()
|
ac.mu.Lock()
|
||||||
ac.printf("connecting")
|
ac.printf("connecting")
|
||||||
if ac.state == Shutdown {
|
if ac.state == Shutdown {
|
||||||
@ -643,6 +642,7 @@ func (ac *addrConn) resetTransport(closeTransport bool) error {
|
|||||||
if e, ok := err.(transport.ConnectionError); ok && !e.Temporary() {
|
if e, ok := err.(transport.ConnectionError); ok && !e.Temporary() {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
grpclog.Printf("grpc: addrConn.resetTransport failed to create client transport: %v; Reconnecting to %q", err, ac.addr)
|
||||||
ac.mu.Lock()
|
ac.mu.Lock()
|
||||||
if ac.state == Shutdown {
|
if ac.state == Shutdown {
|
||||||
// ac.tearDown(...) has been invoked.
|
// ac.tearDown(...) has been invoked.
|
||||||
@ -663,8 +663,6 @@ func (ac *addrConn) resetTransport(closeTransport bool) error {
|
|||||||
case <-ac.ctx.Done():
|
case <-ac.ctx.Done():
|
||||||
return ac.ctx.Err()
|
return ac.ctx.Err()
|
||||||
}
|
}
|
||||||
retries++
|
|
||||||
grpclog.Printf("grpc: addrConn.resetTransport failed to create client transport: %v; Reconnecting to %q", err, ac.addr)
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
ac.mu.Lock()
|
ac.mu.Lock()
|
||||||
|
Reference in New Issue
Block a user