Avoid calling KES Status when peers ping each other (#17140)

This commit is contained in:
Anis Eleuch 2023-05-04 19:28:33 +01:00 committed by GitHub
parent 7f7b489a3d
commit 06cd0a636e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 7 deletions

View File

@ -28,7 +28,7 @@ import (
const unavailable = "offline"
func isServerInitialized() bool {
func isServerNotInitialized() bool {
return newObjectLayerFn() == nil
}
@ -36,7 +36,7 @@ func isServerInitialized() bool {
func ClusterCheckHandler(w http.ResponseWriter, r *http.Request) {
ctx := newContext(r, w, "ClusterCheckHandler")
if isServerInitialized() {
if isServerNotInitialized() {
w.Header().Set(xhttp.MinIOServerStatus, unavailable)
writeResponse(w, http.StatusServiceUnavailable, nil, mimeNone)
return
@ -77,7 +77,7 @@ func ClusterCheckHandler(w http.ResponseWriter, r *http.Request) {
func ClusterReadCheckHandler(w http.ResponseWriter, r *http.Request) {
ctx := newContext(r, w, "ClusterReadCheckHandler")
if isServerInitialized() {
if isServerNotInitialized() {
w.Header().Set(xhttp.MinIOServerStatus, unavailable)
writeResponse(w, http.StatusServiceUnavailable, nil, mimeNone)
return
@ -104,7 +104,13 @@ func ReadinessCheckHandler(w http.ResponseWriter, r *http.Request) {
// LivenessCheckHandler - Checks if the process is up. Always returns success.
func LivenessCheckHandler(w http.ResponseWriter, r *http.Request) {
if isServerInitialized() {
peerCall := r.Header.Get("x-minio-from-peer") != ""
if peerCall {
return
}
if isServerNotInitialized() {
// Service not initialized yet
w.Header().Set(xhttp.MinIOServerStatus, unavailable)
}
@ -121,7 +127,7 @@ func LivenessCheckHandler(w http.ResponseWriter, r *http.Request) {
}
// Verify if KMS is reachable if its configured
if GlobalKMS != nil {
if GlobalKMS != nil && !peerCall {
ctx, cancel := context.WithTimeout(r.Context(), time.Minute)
defer cancel()

View File

@ -125,15 +125,16 @@ func isServerResolvable(endpoint Endpoint, timeout time.Duration) error {
}
ctx, cancel := context.WithTimeout(GlobalContext, timeout)
defer cancel()
req, err := http.NewRequestWithContext(ctx, http.MethodGet, serverURL.String(), nil)
if err != nil {
cancel()
return err
}
req.Header.Set("x-minio-from-peer", "true")
resp, err := httpClient.Do(req)
cancel()
if err != nil {
return err
}