From f42b23ebcada76b86df0bb9a73d3044e1b98243d Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Wed, 19 Apr 2017 16:37:46 +0200 Subject: [PATCH] fixed mimum desriptors in case of unlimited --- arangod/RestServer/FileDescriptorsFeature.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/arangod/RestServer/FileDescriptorsFeature.cpp b/arangod/RestServer/FileDescriptorsFeature.cpp index fdee714a87..8f2397bbee 100644 --- a/arangod/RestServer/FileDescriptorsFeature.cpp +++ b/arangod/RestServer/FileDescriptorsFeature.cpp @@ -59,9 +59,17 @@ void FileDescriptorsFeature::prepare() { adjustFileDescriptors(); } #ifdef TRI_HAVE_GETRLIMIT template -static std::string StringifyLimitValue(T value) { +static bool isUnlimited(T value) { auto max = std::numeric_limits::max(); if (value == max || value == max / 2) { + return true; + } + return false; +} + +template +static std::string StringifyLimitValue(T value) { + if (isUnlimited(value)) { return "unlimited"; } return std::to_string(value); @@ -113,7 +121,7 @@ void FileDescriptorsFeature::adjustFileDescriptors() { uint64_t recommended = RECOMMENDED; uint64_t minimum = _descriptorsMinimum; - if (recommended < minimum) { + if (minimum < recommended && 0 < minimum) { recommended = minimum; } @@ -143,7 +151,7 @@ void FileDescriptorsFeature::adjustFileDescriptors() { LOG_TOPIC(DEBUG, arangodb::Logger::SYSCALL) << "soft limit " << rlim.rlim_cur << " is too small, trying to raise"; - if (recommended < rlim.rlim_max) { + if (!isUnlimited(rlim.rlim_max) && recommended < rlim.rlim_max) { recommended = rlim.rlim_max; }