diff --git a/cmd/background-newdisks-heal-ops.go b/cmd/background-newdisks-heal-ops.go index 7f8407c44..2dc11d9d4 100644 --- a/cmd/background-newdisks-heal-ops.go +++ b/cmd/background-newdisks-heal-ops.go @@ -383,6 +383,10 @@ func healFreshDisk(ctx context.Context, z *erasureServerPools, endpoint Endpoint logger.Info("Healing drive '%s' complete (healed: %d, failed: %d).", disk, tracker.ItemsHealed, tracker.ItemsFailed) } + if len(tracker.QueuedBuckets) > 0 { + return fmt.Errorf("not all buckets were healed: %v", tracker.QueuedBuckets) + } + if serverDebugLog { tracker.printTo(os.Stdout) logger.Info("\n") diff --git a/cmd/global-heal.go b/cmd/global-heal.go index a95c6a59e..7b2160be0 100644 --- a/cmd/global-heal.go +++ b/cmd/global-heal.go @@ -214,11 +214,7 @@ func (er *erasureObjects) healErasureSet(ctx context.Context, buckets []string, disks, _ := er.getOnlineDisksWithHealing() if len(disks) == 0 { - // all disks are healing in this set, this is allowed - // so we simply proceed to next bucket, marking the bucket - // as done as there are no objects to heal. - tracker.bucketDone(bucket) - logger.LogIf(ctx, tracker.update(ctx)) + logger.LogIf(ctx, fmt.Errorf("no online disks found to heal the bucket `%s`", bucket)) continue }