fix: treat errVolumeNotFound as EOF error in listPathRaw (#11238)

master
Harshavardhana 4 years ago committed by GitHub
parent f0808bb2e5
commit 5c52d5ffc7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      cmd/erasure-server-sets.go
  2. 14
      cmd/metacache-set.go

@ -33,6 +33,7 @@ import (
"github.com/minio/minio-go/v7/pkg/tags" "github.com/minio/minio-go/v7/pkg/tags"
"github.com/minio/minio/cmd/config/storageclass" "github.com/minio/minio/cmd/config/storageclass"
"github.com/minio/minio/cmd/logger" "github.com/minio/minio/cmd/logger"
"github.com/minio/minio/pkg/color"
"github.com/minio/minio/pkg/dsync" "github.com/minio/minio/pkg/dsync"
"github.com/minio/minio/pkg/madmin" "github.com/minio/minio/pkg/madmin"
"github.com/minio/minio/pkg/sync/errgroup" "github.com/minio/minio/pkg/sync/errgroup"
@ -332,6 +333,12 @@ func (z *erasureServerPools) CrawlAndGetDataUsage(ctx context.Context, bf *bloom
return err 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. // Crawl latest allBuckets first.
sort.Slice(allBuckets, func(i, j int) bool { sort.Slice(allBuckets, func(i, j int) bool {
return allBuckets[i].Created.After(allBuckets[j].Created) return allBuckets[i].Created.After(allBuckets[j].Created)

@ -834,15 +834,15 @@ func listPathRaw(ctx context.Context, opts listPathRawOptions) (err error) {
} }
// Send request to each disk. // Send request to each disk.
go func() { go func() {
err := d.WalkDir(ctx, WalkDirOptions{ werr := d.WalkDir(ctx, WalkDirOptions{
Bucket: opts.bucket, Bucket: opts.bucket,
BaseDir: opts.path, BaseDir: opts.path,
Recursive: opts.recursive, Recursive: opts.recursive,
ReportNotFound: opts.reportNotFound, ReportNotFound: opts.reportNotFound,
FilterPrefix: opts.filterPrefix}, w) FilterPrefix: opts.filterPrefix}, w)
w.CloseWithError(err) w.CloseWithError(werr)
if err != io.EOF && err != nil && err.Error() != errFileNotFound.Error() { if werr != io.EOF && werr != nil && werr.Error() != errFileNotFound.Error() && werr.Error() != errVolumeNotFound.Error() {
logger.LogIf(ctx, err) logger.LogIf(ctx, werr)
} }
}() }()
} }
@ -878,7 +878,11 @@ func listPathRaw(ctx context.Context, opts listPathRawOptions) (err error) {
fnf++ fnf++
continue continue
} }
if err.Error() == errVolumeNotFound.Error() {
atEOF++
fnf++
continue
}
hasErr++ hasErr++
errs[i] = err errs[i] = err
continue continue

Loading…
Cancel
Save