|
|
|
@ -4,6 +4,7 @@ import ( |
|
|
|
|
"container/list" |
|
|
|
|
"context" |
|
|
|
|
"math" |
|
|
|
|
"net" |
|
|
|
|
"sync" |
|
|
|
|
"sync/atomic" |
|
|
|
|
"time" |
|
|
|
@ -158,8 +159,9 @@ func (n *Node) Pick() selector.DoneFunc { |
|
|
|
|
if n.errHandler != nil && n.errHandler(di.Err) { |
|
|
|
|
success = 0 |
|
|
|
|
} |
|
|
|
|
var netErr net.Error |
|
|
|
|
if errors.Is(context.DeadlineExceeded, di.Err) || errors.Is(context.Canceled, di.Err) || |
|
|
|
|
errors.IsServiceUnavailable(di.Err) || errors.IsGatewayTimeout(di.Err) { |
|
|
|
|
errors.IsServiceUnavailable(di.Err) || errors.IsGatewayTimeout(di.Err) || errors.As(di.Err, netErr) { |
|
|
|
|
success = 0 |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|