diff --git a/pkg/jackal/jackal.go b/pkg/jackal/jackal.go index 6ccdac89a..d7ad6cae1 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" @@ -57,8 +58,6 @@ import ( ) const ( - darwinOpenMax = 10240 - defaultBootstrapTimeout = time.Minute defaultShutdownTimeout = time.Second * 30 @@ -202,7 +201,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 +522,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 +}