diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2025-12-04 18:31:46 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-04 18:31:46 -0800 |
| commit | 3183a49698d77659cd15434ccd58c3002bc8c266 (patch) | |
| tree | 783db24bc24dc2bae68e1c76b3b0fa7909558635 /weed/command/filer.go | |
| parent | f9b4a4c396d42b749f29c07d3c1dec0d2a18aaed (diff) | |
| download | seaweedfs-3183a49698d77659cd15434ccd58c3002bc8c266.tar.xz seaweedfs-3183a49698d77659cd15434ccd58c3002bc8c266.zip | |
fix: S3 downloads failing after idle timeout (#7626)
* fix: S3 downloads failing after idle timeout (#7618)
The idle timeout was incorrectly terminating active downloads because
read and write deadlines were managed independently. During a download,
the server writes data but rarely reads, so the read deadline would
expire even though the connection was actively being used.
Changes:
1. Simplify to single Timeout field - since this is a 'no activity timeout'
where any activity extends the deadline, separate read/write timeouts
are unnecessary. Now uses SetDeadline() which sets both at once.
2. Implement proper 'no activity timeout' - any activity (read or write)
now extends the deadline. The connection only times out when there's
genuinely no activity in either direction.
3. Increase default S3 idleTimeout from 10s to 120s for additional safety
margin when fetching chunks from slow storage backends.
Fixes #7618
* Update weed/util/net_timeout.go
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Diffstat (limited to 'weed/command/filer.go')
| -rw-r--r-- | weed/command/filer.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/weed/command/filer.go b/weed/command/filer.go index 86991a181..bb7092543 100644 --- a/weed/command/filer.go +++ b/weed/command/filer.go @@ -128,7 +128,7 @@ func init() { filerS3Options.tlsCACertificate = cmdFiler.Flag.String("s3.cacert.file", "", "path to the TLS CA certificate file") filerS3Options.tlsVerifyClientCert = cmdFiler.Flag.Bool("s3.tlsVerifyClientCert", false, "whether to verify the client's certificate") filerS3Options.bindIp = cmdFiler.Flag.String("s3.ip.bind", "", "ip address to bind to. If empty, default to same as -ip.bind option.") - filerS3Options.idleTimeout = cmdFiler.Flag.Int("s3.idleTimeout", 10, "connection idle seconds") + filerS3Options.idleTimeout = cmdFiler.Flag.Int("s3.idleTimeout", 120, "connection idle seconds") filerS3Options.concurrentUploadLimitMB = cmdFiler.Flag.Int("s3.concurrentUploadLimitMB", 128, "limit total concurrent upload size for S3") filerS3Options.concurrentFileUploadLimit = cmdFiler.Flag.Int("s3.concurrentFileUploadLimit", 0, "limit number of concurrent file uploads for S3, 0 means unlimited") |
