From 713ef7e38f93588cc1813871d0ecb5af216e6743 Mon Sep 17 00:00:00 2001 From: lutfuahmet Date: Tue, 28 Jun 2022 07:44:45 +0300 Subject: [PATCH 1/2] windows support --- pkg/jackal/jackal.go | 23 ++--------------------- pkg/util/rlimit/rlimit_unix.go | 27 +++++++++++++++++++++++++++ pkg/util/rlimit/rlimit_windows.go | 7 +++++++ 3 files changed, 36 insertions(+), 21 deletions(-) create mode 100644 pkg/util/rlimit/rlimit_unix.go create mode 100644 pkg/util/rlimit/rlimit_windows.go diff --git a/pkg/jackal/jackal.go b/pkg/jackal/jackal.go index 6ccdac89a..d44bd8b23 100644 --- a/pkg/jackal/jackal.go +++ b/pkg/jackal/jackal.go @@ -18,6 +18,7 @@ import ( "context" "flag" "fmt" + "github.com/ortuman/jackal/pkg/util/rlimit" "io" "math/rand" "os" @@ -202,7 +203,7 @@ func (j *Jackal) Run() error { grpc_prometheus.EnableHandlingTimeHistogram() // set maximum opened files limit - if err := setRLimit(); err != nil { + if err := rlimit.SetRLimit(); err != nil { return err } @@ -523,23 +524,3 @@ func (j *Jackal) waitForStopSignal() os.Signal { signal.Notify(j.waitStopCh, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM) return <-j.waitStopCh } - -func setRLimit() error { - var rLim syscall.Rlimit - if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLim); err != nil { - return err - } - if rLim.Cur < rLim.Max { - switch runtime.GOOS { - case "darwin": - // The max file limit is 10240, even though - // the max returned by Getrlimit is 1<<63-1. - // This is OPEN_MAX in sys/syslimits.h. - rLim.Cur = darwinOpenMax - default: - rLim.Cur = rLim.Max - } - return syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLim) - } - return nil -} diff --git a/pkg/util/rlimit/rlimit_unix.go b/pkg/util/rlimit/rlimit_unix.go new file mode 100644 index 000000000..33d3a89a8 --- /dev/null +++ b/pkg/util/rlimit/rlimit_unix.go @@ -0,0 +1,27 @@ +//go:build !windows + +package rlimit + +import "runtime" + +const darwinOpenMax = 10240 + +func SetRLimit() error { + var rLim syscall.Rlimit + if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLim); err != nil { + return err + } + if rLim.Cur < rLim.Max { + switch runtime.GOOS { + case "darwin": + // The max file limit is 10240, even though + // the max returned by Getrlimit is 1<<63-1. + // This is OPEN_MAX in sys/syslimits.h. + rLim.Cur = darwinOpenMax + default: + rLim.Cur = rLim.Max + } + return syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLim) + } + return nil +} diff --git a/pkg/util/rlimit/rlimit_windows.go b/pkg/util/rlimit/rlimit_windows.go new file mode 100644 index 000000000..bc9f1e5da --- /dev/null +++ b/pkg/util/rlimit/rlimit_windows.go @@ -0,0 +1,7 @@ +//go:build windows + +package rlimit + +func SetRLimit() error { + return nil +} From 94787fd4eddd876750792d6ac5593aba1c72da57 Mon Sep 17 00:00:00 2001 From: lutfuahmet Date: Tue, 28 Jun 2022 07:59:40 +0300 Subject: [PATCH 2/2] deleted darwinOpenMax variable --- pkg/jackal/jackal.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/jackal/jackal.go b/pkg/jackal/jackal.go index d44bd8b23..d7ad6cae1 100644 --- a/pkg/jackal/jackal.go +++ b/pkg/jackal/jackal.go @@ -58,8 +58,6 @@ import ( ) const ( - darwinOpenMax = 10240 - defaultBootstrapTimeout = time.Minute defaultShutdownTimeout = time.Second * 30