diff --git a/cmd/lock-rest-client.go b/cmd/lock-rest-client.go index cf81825d3..897afcdab 100644 --- a/cmd/lock-rest-client.go +++ b/cmd/lock-rest-client.go @@ -27,7 +27,6 @@ import ( xhttp "github.com/minio/minio/cmd/http" "github.com/minio/minio/cmd/rest" "github.com/minio/minio/pkg/dsync" - xnet "github.com/minio/minio/pkg/net" ) // lockRESTClient is authenticable lock REST client @@ -161,7 +160,7 @@ func newlockRESTClient(endpoint Endpoint) *lockRESTClient { defer cancel() respBody, err := healthClient.Call(ctx, lockRESTMethodHealth, nil, nil, -1) xhttp.DrainBody(respBody) - return !xnet.IsNetworkOrHostDown(err, false) + return !isNetworkError(err) } return &lockRESTClient{endpoint: endpoint, restClient: restClient} diff --git a/cmd/peer-rest-client.go b/cmd/peer-rest-client.go index 4ac1c85e3..e3ae152bf 100644 --- a/cmd/peer-rest-client.go +++ b/cmd/peer-rest-client.go @@ -882,7 +882,7 @@ func newPeerRESTClient(peer *xnet.Host) *peerRESTClient { defer cancel() respBody, err := healthClient.Call(ctx, peerRESTMethodHealth, nil, nil, -1) xhttp.DrainBody(respBody) - return !xnet.IsNetworkOrHostDown(err, false) + return !isNetworkError(err) } return &peerRESTClient{host: peer, restClient: restClient} diff --git a/cmd/storage-rest-client.go b/cmd/storage-rest-client.go index a101c2297..2ce19eccf 100644 --- a/cmd/storage-rest-client.go +++ b/cmd/storage-rest-client.go @@ -626,7 +626,7 @@ func newStorageRESTClient(endpoint Endpoint, healthcheck bool) *storageRESTClien respBody, err := healthClient.Call(ctx, storageRESTMethodHealth, nil, nil, -1) xhttp.DrainBody(respBody) cancel() - return !xnet.IsNetworkOrHostDown(err, false) && toStorageErr(err) != errDiskNotFound + return toStorageErr(err) != errDiskNotFound } } diff --git a/pkg/net/url.go b/pkg/net/url.go index 8aa3208e4..39de2fae1 100644 --- a/pkg/net/url.go +++ b/pkg/net/url.go @@ -147,12 +147,15 @@ func IsNetworkOrHostDown(err error, expectTimeouts bool) bool { if err == nil { return false } + if errors.Is(err, context.Canceled) { return false } + if expectTimeouts && errors.Is(err, context.DeadlineExceeded) { return false } + // We need to figure if the error either a timeout // or a non-temporary error. e, ok := err.(net.Error)