heal: Report bucket healing result correctly (#20721)

This commit is contained in:
Anis Eleuch
2024-12-04 00:12:25 +01:00
committed by GitHub
parent 734d1e320a
commit eddbe6bca2
3 changed files with 22 additions and 16 deletions

View File

@@ -178,13 +178,24 @@ func (sys *S3PeerSys) HealBucket(ctx context.Context, bucket string, opts madmin
}
}
if healBucketErr := reduceWriteQuorumErrs(ctx, errs, bucketOpIgnoredErrs, len(errs)/2+1); healBucketErr != nil {
return madmin.HealResultItem{}, toObjectErr(healBucketErr, bucket)
}
res := madmin.HealResultItem{
Type: madmin.HealItemBucket,
Bucket: bucket,
SetCount: -1, // explicitly set an invalid value -1, for bucket heal scenario
}
for i, err := range errs {
if err == nil {
return healBucketResults[i], nil
res.Before.Drives = append(res.Before.Drives, healBucketResults[i].Before.Drives...)
res.After.Drives = append(res.After.Drives, healBucketResults[i].After.Drives...)
}
}
return madmin.HealResultItem{}, toObjectErr(errVolumeNotFound, bucket)
return res, nil
}
// ListBuckets lists buckets across all nodes and returns a consistent view:
@@ -355,14 +366,8 @@ func (client *remotePeerS3Client) HealBucket(ctx context.Context, bucket string,
ctx, cancel := context.WithTimeout(ctx, globalDriveConfig.GetMaxTimeout())
defer cancel()
_, err := healBucketRPC.Call(ctx, conn, mss)
// Initialize heal result info
return madmin.HealResultItem{
Type: madmin.HealItemBucket,
Bucket: bucket,
SetCount: -1, // explicitly set an invalid value -1, for bucket heal scenario
}, toStorageErr(err)
resp, err := healBucketRPC.Call(ctx, conn, mss)
return resp.ValueOrZero(), toStorageErr(err)
}
// GetBucketInfo returns bucket stat info from a peer