From d5656eeb6535b20eeb9a925cdad277153e75a33b Mon Sep 17 00:00:00 2001 From: Praveen raj Mani Date: Mon, 4 Mar 2024 22:04:14 +0530 Subject: [PATCH] fix: healthcheck to fail even if one erasure set doesn't have quorum (#19180) fix: healthcheck to return false even if one erasure set doesn't have quorum --- cmd/erasure-server-pool.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/cmd/erasure-server-pool.go b/cmd/erasure-server-pool.go index 1dbf2e714..ab6840b6f 100644 --- a/cmd/erasure-server-pool.go +++ b/cmd/erasure-server-pool.go @@ -2406,18 +2406,21 @@ func (z *erasureServerPools) Health(ctx context.Context, opts HealthOptions) Hea WriteQuorum: poolWriteQuorums[poolIdx], }) - result.Healthy = erasureSetUpCount[poolIdx][setIdx].online >= poolWriteQuorums[poolIdx] - if !result.Healthy { + healthy := erasureSetUpCount[poolIdx][setIdx].online >= poolWriteQuorums[poolIdx] + if !healthy { logger.LogIf(logger.SetReqInfo(ctx, reqInfo), fmt.Errorf("Write quorum may be lost on pool: %d, set: %d, expected write quorum: %d", poolIdx, setIdx, poolWriteQuorums[poolIdx])) } - result.HealthyRead = erasureSetUpCount[poolIdx][setIdx].online >= poolReadQuorums[poolIdx] - if !result.HealthyRead { + result.Healthy = result.Healthy && healthy + + healthyRead := erasureSetUpCount[poolIdx][setIdx].online >= poolReadQuorums[poolIdx] + if !healthyRead { logger.LogIf(logger.SetReqInfo(ctx, reqInfo), fmt.Errorf("Read quorum may be lost on pool: %d, set: %d, expected read quorum: %d", poolIdx, setIdx, poolReadQuorums[poolIdx])) } + result.HealthyRead = result.HealthyRead && healthyRead } }