From 5c52d5ffc706c2d105ddc6d80276024745c1301b Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Thu, 7 Jan 2021 09:52:53 -0800 Subject: [PATCH] fix: treat errVolumeNotFound as EOF error in listPathRaw (#11238) --- cmd/erasure-server-sets.go | 7 +++++++ cmd/metacache-set.go | 14 +++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/cmd/erasure-server-sets.go b/cmd/erasure-server-sets.go index c1745c5ab..170d0e216 100644 --- a/cmd/erasure-server-sets.go +++ b/cmd/erasure-server-sets.go @@ -33,6 +33,7 @@ import ( "github.com/minio/minio-go/v7/pkg/tags" "github.com/minio/minio/cmd/config/storageclass" "github.com/minio/minio/cmd/logger" + "github.com/minio/minio/pkg/color" "github.com/minio/minio/pkg/dsync" "github.com/minio/minio/pkg/madmin" "github.com/minio/minio/pkg/sync/errgroup" @@ -332,6 +333,12 @@ func (z *erasureServerPools) CrawlAndGetDataUsage(ctx context.Context, bf *bloom return err } + if len(allBuckets) == 0 { + logger.Info(color.Green("data-crawl:") + " No buckets found, skipping crawl") + updates <- DataUsageInfo{} // no buckets found update data usage to reflect latest state + return nil + } + // Crawl latest allBuckets first. sort.Slice(allBuckets, func(i, j int) bool { return allBuckets[i].Created.After(allBuckets[j].Created) diff --git a/cmd/metacache-set.go b/cmd/metacache-set.go index 6fea4e5de..0a4644f28 100644 --- a/cmd/metacache-set.go +++ b/cmd/metacache-set.go @@ -834,15 +834,15 @@ func listPathRaw(ctx context.Context, opts listPathRawOptions) (err error) { } // Send request to each disk. go func() { - err := d.WalkDir(ctx, WalkDirOptions{ + werr := d.WalkDir(ctx, WalkDirOptions{ Bucket: opts.bucket, BaseDir: opts.path, Recursive: opts.recursive, ReportNotFound: opts.reportNotFound, FilterPrefix: opts.filterPrefix}, w) - w.CloseWithError(err) - if err != io.EOF && err != nil && err.Error() != errFileNotFound.Error() { - logger.LogIf(ctx, err) + w.CloseWithError(werr) + if werr != io.EOF && werr != nil && werr.Error() != errFileNotFound.Error() && werr.Error() != errVolumeNotFound.Error() { + logger.LogIf(ctx, werr) } }() } @@ -878,7 +878,11 @@ func listPathRaw(ctx context.Context, opts listPathRawOptions) (err error) { fnf++ continue } - + if err.Error() == errVolumeNotFound.Error() { + atEOF++ + fnf++ + continue + } hasErr++ errs[i] = err continue