From f07c9c58e76d81a360a3ae8132c9763dd90a7f56 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Mon, 8 Feb 2021 22:22:26 -0800 Subject: [PATCH] fix: handle setIndexes properly --- cmd/admin-handlers.go | 4 +--- cmd/erasure-sets.go | 4 ++-- cmd/global-heal.go | 15 +++++++++------ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/cmd/admin-handlers.go b/cmd/admin-handlers.go index 0c0727fa0..f1c1d93db 100644 --- a/cmd/admin-handlers.go +++ b/cmd/admin-handlers.go @@ -785,9 +785,7 @@ func (a adminAPIHandlers) HealSetsHandler(w http.ResponseWriter, r *http.Request defer wg.Done() lbDisks := z.serverSets[0].sets[setNumber].getDisks() if err := healErasureSet(ctx, vars[healSetsPrefix], setNumber, opts.sleepForIO, opts.sleepDuration, buckets, lbDisks); err != nil { - if !isErrBucketNotFound(err) { - logger.LogIf(ctx, err) - } + logger.LogIf(ctx, err) } }(setNumber) } diff --git a/cmd/erasure-sets.go b/cmd/erasure-sets.go index e1c508d2e..a7bcfe607 100644 --- a/cmd/erasure-sets.go +++ b/cmd/erasure-sets.go @@ -909,12 +909,12 @@ func lexicallySortedEntryVersions(entryChs []FileInfoVersionsCh, entries []FileI if !found { lentry = entries[i] found = true - setIndex = i + setIndex = entryChs[i].SetIndex continue } if entries[i].Name < lentry.Name { lentry = entries[i] - setIndex = i + setIndex = entryChs[i].SetIndex } } diff --git a/cmd/global-heal.go b/cmd/global-heal.go index d65e13494..21bf829ce 100644 --- a/cmd/global-heal.go +++ b/cmd/global-heal.go @@ -127,11 +127,14 @@ func healErasureSet(ctx context.Context, prefix string, setIndex int, maxIO int, object: backendEncryptedFile, } - buckets = append(buckets, BucketInfo{ - Name: pathJoin(minioMetaBucket, minioConfigPrefix), - }, BucketInfo{ - Name: pathJoin(minioMetaBucket, bucketConfigPrefix), - }) // add metadata .minio.sys/ bucket prefixes to heal + // Heal config prefix. + bgSeq.sourceCh <- healSource{ + bucket: pathJoin(minioMetaBucket, minioConfigPrefix), + } + + bgSeq.sourceCh <- healSource{ + bucket: pathJoin(minioMetaBucket, bucketConfigPrefix), + } // Heal all buckets with all objects var wg sync.WaitGroup @@ -177,7 +180,7 @@ func healErasureSet(ctx context.Context, prefix string, setIndex int, maxIO int, for { entry, quorumCount, ok := lexicallySortedEntryVersions(entryChs, entries, entriesValid) if !ok { - break + return } if quorumCount == setDriveCount {