From ffd57fde900457b1e8df9d948757c84fdf5327da Mon Sep 17 00:00:00 2001 From: Anis Elleuch Date: Mon, 6 Feb 2023 19:42:08 +0100 Subject: [PATCH] Convert 'server closed idle connection' to errDiskNotFound (#16548) --- cmd/storage-rest-client.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cmd/storage-rest-client.go b/cmd/storage-rest-client.go index 3f1e1b069..fa0a6218e 100644 --- a/cmd/storage-rest-client.go +++ b/cmd/storage-rest-client.go @@ -50,9 +50,18 @@ func isNetworkError(err error) bool { return xnet.IsNetworkOrHostDown(nerr.Err, false) } + switch { // A peer node can be in shut down phase and proactively // return 503 server closed error,consider it as an offline node - return err.Error() == http.ErrServerClosed.Error() + case strings.Contains(err.Error(), http.ErrServerClosed.Error()): + return true + // Corner case, the server closed the connection with a keep-alive timeout + // some requests are not retried internally, such as POST request with written body + case strings.Contains(err.Error(), "server closed idle connection"): + return true + } + + return false } // Converts network error to storageErr. This function is