From c73ea27ed77353244898bb40bac5079ea4d496e8 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Wed, 14 Dec 2022 01:57:40 -0800 Subject: [PATCH] do not log checksum mismatch error, client received the error (#16246) --- cmd/erasure-encode.go | 14 +++++++++++--- internal/hash/errors.go | 11 ++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/cmd/erasure-encode.go b/cmd/erasure-encode.go index f4fb56b85..786d9b2fc 100644 --- a/cmd/erasure-encode.go +++ b/cmd/erasure-encode.go @@ -22,6 +22,7 @@ import ( "io" "sync" + "github.com/minio/minio/internal/hash" "github.com/minio/minio/internal/logger" ) @@ -83,9 +84,16 @@ func (e *Erasure) Encode(ctx context.Context, src io.Reader, writers []io.Writer for { var blocks [][]byte n, err := io.ReadFull(src, buf) - if err != nil && err != io.EOF && err != io.ErrUnexpectedEOF { - logger.LogIf(ctx, err) - return 0, err + if err != nil { + if !IsErrIgnored(err, []error{ + io.EOF, + io.ErrUnexpectedEOF, + }...) { + if !hash.IsChecksumMismatch(err) { + logger.LogIf(ctx, err) + } + return 0, err + } } eof := err == io.EOF || err == io.ErrUnexpectedEOF if n == 0 && total != 0 { diff --git a/internal/hash/errors.go b/internal/hash/errors.go index f777fe17f..c507a93aa 100644 --- a/internal/hash/errors.go +++ b/internal/hash/errors.go @@ -17,7 +17,10 @@ package hash -import "fmt" +import ( + "errors" + "fmt" +) // SHA256Mismatch - when content sha256 does not match with what was sent from client. type SHA256Mismatch struct { @@ -58,3 +61,9 @@ type ChecksumMismatch struct { func (e ChecksumMismatch) Error() string { return "Bad checksum: Want " + e.Want + " does not match calculated " + e.Got } + +// IsChecksumMismatch matches if 'err' is hash.ChecksumMismatch +func IsChecksumMismatch(err error) bool { + var herr ChecksumMismatch + return errors.As(err, &herr) +}