From 2eeb0e6a0b189562ed2e8d5562b3c7b42ceca8b9 Mon Sep 17 00:00:00 2001 From: Anis Elleuch Date: Mon, 20 Apr 2020 21:48:54 +0100 Subject: [PATCH] heal: Fix heal buckets result reporting (#9397) healBucket() was not properly collecting results after healing buckets. This commit adds After drives information correctly. --- cmd/xl-v1-healing.go | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/cmd/xl-v1-healing.go b/cmd/xl-v1-healing.go index 5041af4c1..dc3a04ca3 100644 --- a/cmd/xl-v1-healing.go +++ b/cmd/xl-v1-healing.go @@ -122,11 +122,6 @@ func healBucket(ctx context.Context, storageDisks []StorageAPI, bucket string, w Endpoint: drive, State: beforeState[i], }) - res.After.Drives = append(res.After.Drives, madmin.HealDriveInfo{ - UUID: "", - Endpoint: drive, - State: afterState[i], - }) } } @@ -151,12 +146,26 @@ func healBucket(ctx context.Context, storageDisks []StorageAPI, bucket string, w errs = g.Wait() reducedErr = reduceWriteQuorumErrs(ctx, errs, bucketOpIgnoredErrs, writeQuorum) - if reducedErr == errXLWriteQuorum { - // Purge successfully created buckets if we don't have writeQuorum. - undoMakeBucket(storageDisks, bucket) + if reducedErr != nil { + if reducedErr == errXLWriteQuorum { + // Purge successfully created buckets if we don't have writeQuorum. + undoMakeBucket(storageDisks, bucket) + } + return res, reducedErr } - return res, reducedErr + for i := range afterState { + if storageDisks[i] != nil { + drive := storageDisks[i].String() + res.After.Drives = append(res.After.Drives, madmin.HealDriveInfo{ + UUID: "", + Endpoint: drive, + State: afterState[i], + }) + } + } + + return res, nil } // listAllBuckets lists all buckets from all disks. It also