diff --git a/cmd/gateway-common.go b/cmd/gateway-common.go index cb76dad6d..b61b6de08 100644 --- a/cmd/gateway-common.go +++ b/cmd/gateway-common.go @@ -297,6 +297,10 @@ func ErrorRespToObjectError(err error, params ...string) error { } switch minioErr.Code { + case "PreconditionFailed": + err = PreConditionFailed{} + case "InvalidRange": + err = InvalidRange{} case "BucketAlreadyOwnedByYou": err = BucketAlreadyOwnedByYou{} case "BucketNotEmpty": diff --git a/cmd/object-handlers.go b/cmd/object-handlers.go index 88a449b6c..924ee724d 100644 --- a/cmd/object-handlers.go +++ b/cmd/object-handlers.go @@ -420,11 +420,6 @@ func (api objectAPIHandlers) getObjectHandler(ctx context.Context, objectAPI Obj gr, err := getObjectNInfo(ctx, bucket, object, rs, r.Header, readLock, opts) if err != nil { - if isErrPreconditionFailed(err) { - writeErrorResponse(ctx, w, toAPIError(ctx, err), r.URL) - return - } - var ( reader *GetObjectReader proxy proxyResult @@ -434,9 +429,12 @@ func (api objectAPIHandlers) getObjectHandler(ctx context.Context, objectAPI Obj if !proxytgts.Empty() { // proxy to replication target if active-active replication is in place. reader, proxy, perr = proxyGetToReplicationTarget(ctx, bucket, object, rs, r.Header, opts, proxytgts) - if perr != nil && !isErrObjectNotFound(ErrorRespToObjectError(perr, bucket, object)) && - !isErrVersionNotFound(ErrorRespToObjectError(perr, bucket, object)) { - logger.LogIf(ctx, fmt.Errorf("Replication proxy failed for %s/%s(%s) - %w", bucket, object, opts.VersionID, perr)) + if perr != nil { + proxyGetErr := ErrorRespToObjectError(perr, bucket, object) + if !isErrObjectNotFound(proxyGetErr) && !isErrVersionNotFound(proxyGetErr) && + !isErrPreconditionFailed(proxyGetErr) && !isErrInvalidRange(proxyGetErr) { + logger.LogIf(ctx, fmt.Errorf("Replication proxy failed for %s/%s(%s) - %w", bucket, object, opts.VersionID, perr)) + } } if reader != nil && proxy.Proxy && perr == nil { gr = reader