From d424cbbcd5d284d7a1a6e2c671da29ca12a592c3 Mon Sep 17 00:00:00 2001 From: ARibster Date: Thu, 1 May 2025 22:09:47 +0200 Subject: [PATCH] fix: S3 Feature: please add s3.idleTimeout command line parameter #6746 (#6747) ildeTimeout command line parameter for s3 --- weed/command/filer.go | 1 + weed/command/s3.go | 7 +++++-- weed/command/server.go | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/weed/command/filer.go b/weed/command/filer.go index 55ea1169d..a6b5d57ca 100644 --- a/weed/command/filer.go +++ b/weed/command/filer.go @@ -121,6 +121,7 @@ func init() { filerS3Options.localSocket = cmdFiler.Flag.String("s3.localSocket", "", "default to /tmp/seaweedfs-s3-.sock") 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.idleTimeout = cmdFiler.Flag.Int("s3.idleTimeout", 10, "connection idle seconds") // start webdav on filer filerStartWebDav = cmdFiler.Flag.Bool("webdav", false, "whether to start webdav gateway") diff --git a/weed/command/s3.go b/weed/command/s3.go index 84042b3e0..4f513a5fa 100644 --- a/weed/command/s3.go +++ b/weed/command/s3.go @@ -57,6 +57,7 @@ type S3Options struct { dataCenter *string localSocket *string certProvider certprovider.Provider + idleTimeout *int } func init() { @@ -81,6 +82,7 @@ func init() { s3StandaloneOptions.allowDeleteBucketNotEmpty = cmdS3.Flag.Bool("allowDeleteBucketNotEmpty", true, "allow recursive deleting all entries along with bucket") s3StandaloneOptions.localFilerSocket = cmdS3.Flag.String("localFilerSocket", "", "local filer socket path") s3StandaloneOptions.localSocket = cmdS3.Flag.String("localSocket", "", "default to /tmp/seaweedfs-s3-.sock") + s3StandaloneOptions.idleTimeout = cmdS3.Flag.Int("idleTimeout", 10, "connection idle seconds") } var cmdS3 = &Command{ @@ -275,7 +277,8 @@ func (s3opt *S3Options) startS3Server() bool { } listenAddress := fmt.Sprintf("%s:%d", *s3opt.bindIp, *s3opt.port) - s3ApiListener, s3ApiLocalListener, err := util.NewIpAndLocalListeners(*s3opt.bindIp, *s3opt.port, time.Duration(10)*time.Second) + s3ApiListener, s3ApiLocalListener, err := util.NewIpAndLocalListeners( + *s3opt.bindIp, *s3opt.port, time.Duration(*s3opt.idleTimeout)*time.Second) if err != nil { glog.Fatalf("S3 API Server listener on %s error: %v", listenAddress, err) } @@ -350,7 +353,7 @@ func (s3opt *S3Options) startS3Server() bool { } else { glog.V(0).Infof("Start Seaweed S3 API Server %s at https port %d", util.Version(), *s3opt.portHttps) s3ApiListenerHttps, s3ApiLocalListenerHttps, _ := util.NewIpAndLocalListeners( - *s3opt.bindIp, *s3opt.portHttps, time.Duration(10)*time.Second) + *s3opt.bindIp, *s3opt.portHttps, time.Duration(*s3opt.idleTimeout)*time.Second) if s3ApiLocalListenerHttps != nil { go func() { if err = httpS.ServeTLS(s3ApiLocalListenerHttps, "", ""); err != nil { diff --git a/weed/command/server.go b/weed/command/server.go index 1532cdd90..797cde0dd 100644 --- a/weed/command/server.go +++ b/weed/command/server.go @@ -157,6 +157,7 @@ func init() { s3Options.allowDeleteBucketNotEmpty = cmdServer.Flag.Bool("s3.allowDeleteBucketNotEmpty", true, "allow recursive deleting all entries along with bucket") s3Options.localSocket = cmdServer.Flag.String("s3.localSocket", "", "default to /tmp/seaweedfs-s3-.sock") s3Options.bindIp = cmdServer.Flag.String("s3.ip.bind", "", "ip address to bind to. If empty, default to same as -ip.bind option.") + s3Options.idleTimeout = cmdServer.Flag.Int("s3.idleTimeout", 10, "connection idle seconds") iamOptions.port = cmdServer.Flag.Int("iam.port", 8111, "iam server http listen port")