HealObjects should remove objects without quorum (#7407)

This PR adds a way to list objects without quorum
such that they can purged by `mc admin heal --remove`
This commit is contained in:
Harshavardhana
2019-03-26 14:57:44 -07:00
committed by kannappanr
parent 9629de8230
commit 4a698c731b
5 changed files with 180 additions and 60 deletions

View File

@@ -1326,20 +1326,10 @@ func (s *xlSets) HealObjects(ctx context.Context, bucket, prefix string, healObj
endWalkCh := make(chan struct{})
isLeaf := func(bucket, entry string) bool {
entry = strings.TrimSuffix(entry, slashSeparator)
// Verify if we are at the leaf, a leaf is where we
// see `xl.json` inside a directory.
return s.getHashedSet(entry).isObject(bucket, entry)
return hasSuffix(entry, xlMetaJSONFile)
}
isLeafDir := func(bucket, entry string) bool {
var ok bool
for _, set := range s.sets {
ok = set.isObjectDir(bucket, entry)
if ok {
return true
}
}
return false
}
@@ -1354,7 +1344,7 @@ func (s *xlSets) HealObjects(ctx context.Context, bucket, prefix string, healObj
if walkResult.err != nil {
return toObjectErr(walkResult.err, bucket, prefix)
}
if err := healObjectFn(bucket, walkResult.entry); err != nil {
if err := healObjectFn(bucket, strings.TrimSuffix(walkResult.entry, slashSeparator+xlMetaJSONFile)); err != nil {
return toObjectErr(err, bucket, walkResult.entry)
}
if walkResult.end {