Repository: minio/minio (language: go)

Issue:
s3.PutObject on single transaction failed for large file 
## NOTE
Version 2024-05-28 18:49 fail if upload large file with one transaction (not multipart)
## Expected Behavior
If via WEB GUI upload large object, process will finish OK

## Current Behavior
when I upload a larger object using the website, "Resource request is unwritable, please reduce your request rate" appears after a while. If I use trace --debugg from mc I get the information "503 Service Unavailable" for s3.PutObject.

MultiPart upload of the same object is OK.

If I use the older version 2023-11-01T18:37:25Z everything is OK.


## Possible Solution
downgrade - but it is forbidden

## Steps to Reproduce (for bugs)
use Web UI and make upload large file (more then 700MB)
 
## Context
<!--- How has this issue affected you? What are you trying to accomplish? -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->

## Regression
<!-- Is this issue a regression? (Yes / No) -->
<!-- If Yes, optionally please include minio version or commit id or PR# that caused this regression, if you have these details. -->

## Your Environment
4 servers (every 12 disk (11TB)
erasure-coding
OL8



Discussion / hints:
upload large object (single transaction) failed via aws protocol too (not only web ui)
It looks like it takes longer than 30 seconds can you do `mc admin trace -v alias/` and share the output here ? 
yes, here is 
[result.txt](https://github.com/user-attachments/files/15515917/result.txt)

how about you upload a smaller object like 100MiB? 
small object is OK. Minio_release was uploaded OK
What file system are you using?
this is related to the aggressive deadlines we added to handle hung node scenarios @klauspost 
Yeah its the 30sec READ deadline on the client side conn for REST CreateFile() for some reason this connection is getting closed. 
> What file system are you using?

xfs

Fix patch:
diff --git a/.github/workflows/mint.yml b/.github/workflows/mint.yml
index 01467339135d5..d465e1d74fe38 100644
--- a/.github/workflows/mint.yml
+++ b/.github/workflows/mint.yml
@@ -55,9 +55,10 @@ jobs:
         run: |
           ${GITHUB_WORKSPACE}/.github/workflows/run-mint.sh "erasure" "minio" "minio123" "${{ steps.vars.outputs.sha_short }}"
 
-      - name: resiliency
-        run: |
-          ${GITHUB_WORKSPACE}/.github/workflows/run-mint.sh "resiliency" "minio" "minio123" "${{ steps.vars.outputs.sha_short }}"
+      # FIXME: renable this back when we have a valid way to add deadlines for PUT()s (internode CreateFile)
+      # - name: resiliency
+      #   run: |
+      #     ${GITHUB_WORKSPACE}/.github/workflows/run-mint.sh "resiliency" "minio" "minio123" "${{ steps.vars.outputs.sha_short }}"
 
       - name: The job must cleanup
         if: ${{ always() }}
diff --git a/cmd/logging.go b/cmd/logging.go
index 769486f11ec57..9f3088d2ccee9 100644
--- a/cmd/logging.go
+++ b/cmd/logging.go
@@ -8,6 +8,10 @@ import (
 	"github.com/minio/minio/internal/logger"
 )
 
+func proxyLogIf(ctx context.Context, err error, errKind ...interface{}) {
+	logger.LogIf(ctx, "proxy", err, errKind...)
+}
+
 func replLogIf(ctx context.Context, err error, errKind ...interface{}) {
 	logger.LogIf(ctx, "replication", err, errKind...)
 }
diff --git a/cmd/server-main.go b/cmd/server-main.go
index d477466d305d8..938d6176ee5d7 100644
--- a/cmd/server-main.go
+++ b/cmd/server-main.go
@@ -414,11 +414,12 @@ func serverHandleCmdArgs(ctxt serverCtxt) {
 	setGlobalInternodeInterface(ctxt.Interface)
 
 	globalTCPOptions = xhttp.TCPOptions{
-		UserTimeout:    int(ctxt.UserTimeout.Milliseconds()),
-		DriveOPTimeout: globalDriveConfig.GetOPTimeout,
-		Interface:      ctxt.Interface,
-		SendBufSize:    ctxt.SendBufSize,
-		RecvBufSize:    ctxt.RecvBufSize,
+		UserTimeout: int(ctxt.UserTimeout.Milliseconds()),
+		// FIXME: Bring this back when we have valid way to handle deadlines
+		//		DriveOPTimeout: globalDriveConfig.GetOPTimeout,
+		Interface:   ctxt.Interface,
+		SendBufSize: ctxt.SendBufSize,
+		RecvBufSize: ctxt.RecvBufSize,
 	}
 
 	// allow transport to be HTTP/1.1 for proxying.
@@ -430,7 +431,7 @@ func serverHandleCmdArgs(ctxt serverCtxt) {
 		RoundTripper: globalRemoteTargetTransport,
 		Logger: func(err error) {
 			if err != nil && !errors.Is(err, context.Canceled) {
-				replLogIf(GlobalContext, err)
+				proxyLogIf(GlobalContext, err)
 			}
 		},
 	})


Test patch: