From 0bab1c1895a13144a1a46abc0f063f000bd240a4 Mon Sep 17 00:00:00 2001 From: Krishnan Parthasarathi Date: Thu, 6 May 2021 16:06:57 -0700 Subject: [PATCH] Heal restored object contents on disk (#12238) --- cmd/erasure-healing-common.go | 5 ++--- cmd/erasure-healing.go | 7 +++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/cmd/erasure-healing-common.go b/cmd/erasure-healing-common.go index 03410d509..ab7efc330 100644 --- a/cmd/erasure-healing-common.go +++ b/cmd/erasure-healing-common.go @@ -23,7 +23,6 @@ import ( "time" "github.com/minio/madmin-go" - "github.com/minio/minio/pkg/bucket/lifecycle" ) // commonTime returns a maximally occurring time from a list of time. @@ -280,11 +279,11 @@ func disksWithAllParts(ctx context.Context, onlineDisks []StorageAPI, partsMetad // disk has a valid xl.meta but may not have all the // parts. This is considered an outdated disk, since // it needs healing too. - if partsMetadata[i].TransitionStatus != lifecycle.TransitionComplete { + if !partsMetadata[i].IsRemote() { dataErrs[i] = onlineDisk.VerifyFile(ctx, bucket, object, partsMetadata[i]) } case madmin.HealNormalScan: - if partsMetadata[i].TransitionStatus != lifecycle.TransitionComplete { + if !partsMetadata[i].IsRemote() { dataErrs[i] = onlineDisk.CheckParts(ctx, bucket, object, partsMetadata[i]) } } diff --git a/cmd/erasure-healing.go b/cmd/erasure-healing.go index 60fa9c1da..d4beda6d0 100644 --- a/cmd/erasure-healing.go +++ b/cmd/erasure-healing.go @@ -213,7 +213,7 @@ func shouldHealObjectOnDisk(erErr, dataErr error, meta FileInfo, quorumModTime t return true } if erErr == nil { - if meta.TransitionStatus != lifecycle.TransitionComplete { + if !meta.IsRemote() { // If xl.meta was read fine but there may be problem with the part.N files. if IsErr(dataErr, []error{ errFileNotFound, @@ -271,7 +271,6 @@ func (er erasureObjects) healObject(ctx context.Context, bucket string, object s // List of disks having all parts as per latest er.meta. availableDisks, dataErrs := disksWithAllParts(ctx, latestDisks, partsMetadata, errs, bucket, object, scanMode) - // Loop to find number of disks with valid data, per-drive // data state and a list of outdated disks on which data needs // to be healed. @@ -367,7 +366,7 @@ func (er erasureObjects) healObject(ctx context.Context, bucket string, object s nfi := fi nfi.Erasure.Index = 0 nfi.Erasure.Checksums = nil - if fi.TransitionStatus != lifecycle.TransitionComplete { + if fi.IsRemote() { nfi.Parts = nil } return nfi @@ -401,7 +400,7 @@ func (er erasureObjects) healObject(ctx context.Context, bucket string, object s inlineBuffers = make([]*bytes.Buffer, len(outDatedDisks)) } - if !latestMeta.Deleted && latestMeta.TransitionStatus != lifecycle.TransitionComplete { + if !latestMeta.Deleted && !latestMeta.IsRemote() { result.DataBlocks = latestMeta.Erasure.DataBlocks result.ParityBlocks = latestMeta.Erasure.ParityBlocks