From 1b5f28e99b145b0e3a5d99d1801a9b5cbfbdb091 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Mon, 4 Mar 2024 20:48:44 -0800 Subject: [PATCH] fix: skip local disks properly in cluster health maintenance check (#19184) --- cmd/erasure-server-pool.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/cmd/erasure-server-pool.go b/cmd/erasure-server-pool.go index ab6840b6f..3e5cae29a 100644 --- a/cmd/erasure-server-pool.go +++ b/cmd/erasure-server-pool.go @@ -2318,8 +2318,19 @@ func (z *erasureServerPools) Health(ctx context.Context, opts HealthOptions) Hea storageInfo := z.StorageInfo(ctx, false) for _, disk := range storageInfo.Disks { - if disk.Local && opts.Maintenance { - continue + if opts.Maintenance { + var skip bool + globalLocalDrivesMu.RLock() + for _, drive := range globalLocalDrives { + if drive != nil && drive.Endpoint().String() == disk.Endpoint { + skip = true + break + } + } + globalLocalDrivesMu.RUnlock() + if skip { + continue + } } if disk.PoolIndex > -1 && disk.SetIndex > -1 { @@ -2426,6 +2437,7 @@ func (z *erasureServerPools) Health(ctx context.Context, opts HealthOptions) Hea if opts.Maintenance { result.Healthy = result.Healthy && drivesHealing == 0 + result.HealthyRead = result.HealthyRead && drivesHealing == 0 result.HealingDrives = drivesHealing }