avoid printing io.ErrUnexpectedEOF for .metacache objects (#15642)

This commit is contained in:
Harshavardhana 2022-09-02 12:47:17 -07:00 committed by GitHub
parent 240164560f
commit 5ea629beb2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -502,17 +502,26 @@ func readAllXL(ctx context.Context, disks []StorageAPI, bucket, object string, r
}, index)
}
ignoredErrs := []error{
errFileNotFound,
errVolumeNotFound,
errFileVersionNotFound,
errDiskNotFound,
}
errs := g.Wait()
for index, err := range errs {
if err == nil {
continue
}
if !IsErr(err, []error{
errFileNotFound,
errVolumeNotFound,
errFileVersionNotFound,
errDiskNotFound,
}...) {
if bucket == minioMetaBucket {
// minioMetaBucket "reads" for .metacache are not written with O_SYNC
// so there is a potential for them to not fully committed to stable
// storage leading to unexpected EOFs. Allow these failures to
// be ignored since the caller already ignores them in streamMetadataParts()
ignoredErrs = append(ignoredErrs, io.ErrUnexpectedEOF, io.EOF)
}
if !IsErr(err, ignoredErrs...) {
logger.LogOnceIf(ctx, fmt.Errorf("Drive %s, path (%s/%s) returned an error (%w)",
disks[index], bucket, object, err),
disks[index].String())