fix: handle setIndexes properly

This commit is contained in:
Harshavardhana 2021-02-08 22:22:26 -08:00
parent bc89e47066
commit f07c9c58e7
3 changed files with 12 additions and 11 deletions

View File

@ -785,9 +785,7 @@ func (a adminAPIHandlers) HealSetsHandler(w http.ResponseWriter, r *http.Request
defer wg.Done() defer wg.Done()
lbDisks := z.serverSets[0].sets[setNumber].getDisks() lbDisks := z.serverSets[0].sets[setNumber].getDisks()
if err := healErasureSet(ctx, vars[healSetsPrefix], setNumber, opts.sleepForIO, opts.sleepDuration, buckets, lbDisks); err != nil { 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) }(setNumber)
} }

View File

@ -909,12 +909,12 @@ func lexicallySortedEntryVersions(entryChs []FileInfoVersionsCh, entries []FileI
if !found { if !found {
lentry = entries[i] lentry = entries[i]
found = true found = true
setIndex = i setIndex = entryChs[i].SetIndex
continue continue
} }
if entries[i].Name < lentry.Name { if entries[i].Name < lentry.Name {
lentry = entries[i] lentry = entries[i]
setIndex = i setIndex = entryChs[i].SetIndex
} }
} }

View File

@ -127,11 +127,14 @@ func healErasureSet(ctx context.Context, prefix string, setIndex int, maxIO int,
object: backendEncryptedFile, object: backendEncryptedFile,
} }
buckets = append(buckets, BucketInfo{ // Heal config prefix.
Name: pathJoin(minioMetaBucket, minioConfigPrefix), bgSeq.sourceCh <- healSource{
}, BucketInfo{ bucket: pathJoin(minioMetaBucket, minioConfigPrefix),
Name: pathJoin(minioMetaBucket, bucketConfigPrefix), }
}) // add metadata .minio.sys/ bucket prefixes to heal
bgSeq.sourceCh <- healSource{
bucket: pathJoin(minioMetaBucket, bucketConfigPrefix),
}
// Heal all buckets with all objects // Heal all buckets with all objects
var wg sync.WaitGroup var wg sync.WaitGroup
@ -177,7 +180,7 @@ func healErasureSet(ctx context.Context, prefix string, setIndex int, maxIO int,
for { for {
entry, quorumCount, ok := lexicallySortedEntryVersions(entryChs, entries, entriesValid) entry, quorumCount, ok := lexicallySortedEntryVersions(entryChs, entries, entriesValid)
if !ok { if !ok {
break return
} }
if quorumCount == setDriveCount { if quorumCount == setDriveCount {