diff --git a/cmd/erasure-metadata-utils.go b/cmd/erasure-metadata-utils.go index 51ea2d6e4..99b70f9c8 100644 --- a/cmd/erasure-metadata-utils.go +++ b/cmd/erasure-metadata-utils.go @@ -137,24 +137,26 @@ func readAllFileInfo(ctx context.Context, disks []StorageAPI, bucket, object, ve return errDiskNotFound } metadataArray[index], err = disks[index].ReadVersion(ctx, bucket, object, versionID, readData) - if err != nil { - if !IsErr(err, []error{ - errFileNotFound, - errVolumeNotFound, - errFileVersionNotFound, - errDiskNotFound, - }...) { - logger.LogOnceIf(ctx, fmt.Errorf("Drive %s, path (%s/%s) returned an error (%w)", - disks[index], bucket, object, err), - disks[index].String()) - } - } return err }, index) } + errs := g.Wait() + for index, err := range errs { + if !IsErr(err, []error{ + errFileNotFound, + errVolumeNotFound, + errFileVersionNotFound, + errDiskNotFound, + }...) { + logger.LogOnceIf(ctx, fmt.Errorf("Drive %s, path (%s/%s) returned an error (%w)", + disks[index], bucket, object, err), + disks[index].String()) + } + } + // Return all the metadata. - return metadataArray, g.Wait() + return metadataArray, errs } // shuffleDisksAndPartsMetadataByIndex this function should be always used by GetObjectNInfo() diff --git a/cmd/erasure-object.go b/cmd/erasure-object.go index 29ef73155..69dc1a8c6 100644 --- a/cmd/erasure-object.go +++ b/cmd/erasure-object.go @@ -476,16 +476,6 @@ func readAllXL(ctx context.Context, disks []StorageAPI, bucket, object string, r } rf, err := disks[index].ReadXL(ctx, bucket, object, readData) if err != nil { - if !IsErr(err, []error{ - errFileNotFound, - errVolumeNotFound, - errFileVersionNotFound, - errDiskNotFound, - }...) { - logger.LogOnceIf(ctx, fmt.Errorf("Drive %s, path (%s/%s) returned an error (%w)", - disks[index], bucket, object, err), - disks[index].String()) - } return err } @@ -502,6 +492,19 @@ func readAllXL(ctx context.Context, disks []StorageAPI, bucket, object string, r } errs := g.Wait() + for index, err := range errs { + if !IsErr(err, []error{ + errFileNotFound, + errVolumeNotFound, + errFileVersionNotFound, + errDiskNotFound, + }...) { + logger.LogOnceIf(ctx, fmt.Errorf("Drive %s, path (%s/%s) returned an error (%w)", + disks[index], bucket, object, err), + disks[index].String()) + } + } + for index := range metadataArray { if metadataArray[index] != nil { metadataShallowVersions[index] = metadataArray[index].versions diff --git a/cmd/xl-storage.go b/cmd/xl-storage.go index 2e0559057..5851dc861 100644 --- a/cmd/xl-storage.go +++ b/cmd/xl-storage.go @@ -2066,7 +2066,7 @@ func skipAccessChecks(volume string) (ok bool) { // RenameData - rename source path to destination path atomically, metadata and data directory. func (s *xlStorage) RenameData(ctx context.Context, srcVolume, srcPath string, fi FileInfo, dstVolume, dstPath string) (err error) { defer func() { - if err != nil && !contextCanceled(ctx) { + if err != nil && !contextCanceled(ctx) && !errors.Is(err, errFileNotFound) { // Only log these errors if context is not yet canceled. logger.LogIf(ctx, fmt.Errorf("srcVolume: %s, srcPath: %s, dstVolume: %s:, dstPath: %s - error %v", srcVolume, srcPath,