aboutsummaryrefslogtreecommitdiff
path: root/setup
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2022-03-11 17:27:12 +0000
committerGitHub <noreply@github.com>2022-03-11 17:27:12 +0000
commit01d71a767dbd11fd7b17b948db6d3052f577c796 (patch)
tree4928ae412c6bad692f16d956cc5ee08b15f7a48d /setup
parent507a8e67739c2cfd89f5be48fdf96bdb0d1698d5 (diff)
Platform sanity checks (#2271)
* Platform sanity checks * Don't yell about `root` because Docker
Diffstat (limited to 'setup')
-rw-r--r--setup/base/base.go1
-rw-r--r--setup/base/sanity_other.go8
-rw-r--r--setup/base/sanity_unix.go22
3 files changed, 31 insertions, 0 deletions
diff --git a/setup/base/base.go b/setup/base/base.go
index ef3b2be2..692a77d5 100644
--- a/setup/base/base.go
+++ b/setup/base/base.go
@@ -100,6 +100,7 @@ const (
// The componentName is used for logging purposes, and should be a friendly name
// of the compontent running, e.g. "SyncAPI"
func NewBaseDendrite(cfg *config.Dendrite, componentName string, options ...BaseDendriteOptions) *BaseDendrite {
+ platformSanityChecks()
useHTTPAPIs := false
cacheMetrics := true
for _, opt := range options {
diff --git a/setup/base/sanity_other.go b/setup/base/sanity_other.go
new file mode 100644
index 00000000..48fe6e1f
--- /dev/null
+++ b/setup/base/sanity_other.go
@@ -0,0 +1,8 @@
+//go:build !linux && !darwin && !netbsd && !freebsd && !openbsd && !solaris && !dragonfly && !aix
+// +build !linux,!darwin,!netbsd,!freebsd,!openbsd,!solaris,!dragonfly,!aix
+
+package base
+
+func platformSanityChecks() {
+ // Nothing to do yet.
+}
diff --git a/setup/base/sanity_unix.go b/setup/base/sanity_unix.go
new file mode 100644
index 00000000..0c1543e0
--- /dev/null
+++ b/setup/base/sanity_unix.go
@@ -0,0 +1,22 @@
+//go:build linux || darwin || netbsd || freebsd || openbsd || solaris || dragonfly || aix
+// +build linux darwin netbsd freebsd openbsd solaris dragonfly aix
+
+package base
+
+import (
+ "syscall"
+
+ "github.com/sirupsen/logrus"
+)
+
+func platformSanityChecks() {
+ // Dendrite needs a relatively high number of file descriptors in order
+ // to function properly, particularly when federating with lots of servers.
+ // If we run out of file descriptors, we might run into problems accessing
+ // PostgreSQL amongst other things. Complain at startup if we think the
+ // number of file descriptors is too low.
+ var rLimit syscall.Rlimit
+ if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit); err == nil && rLimit.Cur < 65535 {
+ logrus.Warnf("IMPORTANT: Process file descriptor limit is currently %d, it is recommended to raise the limit for Dendrite to at least 65535 to avoid issues", rLimit.Cur)
+ }
+}