Don't assert on failed getrlimit call to allow called to handle this gracefully as it already does, just abort where we need to know the numbers

This commit is contained in:
Ondřej Surý
2018-10-13 12:10:43 +02:00
parent a831e0f72d
commit e2e138a801
2 changed files with 31 additions and 22 deletions

View File

@@ -1068,14 +1068,18 @@ setup(void) {
/*
* Get the initial resource limits.
*/
(void)isc_resource_getlimit(isc_resource_stacksize,
&named_g_initstacksize);
(void)isc_resource_getlimit(isc_resource_datasize,
&named_g_initdatasize);
(void)isc_resource_getlimit(isc_resource_coresize,
&named_g_initcoresize);
(void)isc_resource_getlimit(isc_resource_openfiles,
&named_g_initopenfiles);
RUNTIME_CHECK(isc_resource_getlimit(isc_resource_stacksize,
&named_g_initstacksize)
== ISC_R_SUCCESS);
RUNTIME_CHECK(isc_resource_getlimit(isc_resource_datasize,
&named_g_initdatasize)
== ISC_R_SUCCESS);
RUNTIME_CHECK(isc_resource_getlimit(isc_resource_coresize,
&named_g_initcoresize)
== ISC_R_SUCCESS);
RUNTIME_CHECK(isc_resource_getlimit(isc_resource_openfiles,
&named_g_initopenfiles)
== ISC_R_SUCCESS);
/*
* System resources cannot effectively be tuned on some systems.
@@ -1083,8 +1087,9 @@ setup(void) {
*/
old_openfiles = named_g_initopenfiles;
named_os_adjustnofile();
(void)isc_resource_getlimit(isc_resource_openfiles,
&named_g_initopenfiles);
RUNTIME_CHECK(isc_resource_getlimit(isc_resource_openfiles,
&named_g_initopenfiles)
== ISC_R_SUCCESS);
if (old_openfiles != named_g_initopenfiles) {
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,

View File

@@ -180,34 +180,38 @@ isc_resource_setlimit(isc_resource_t resource, isc_resourcevalue_t value) {
isc_result_t
isc_resource_getlimit(isc_resource_t resource, isc_resourcevalue_t *value) {
int unixresult;
int unixresource;
struct rlimit rl;
isc_result_t result;
result = resource2rlim(resource, &unixresource);
if (result == ISC_R_SUCCESS) {
unixresult = getrlimit(unixresource, &rl);
INSIST(unixresult == 0);
*value = rl.rlim_max;
if (result != ISC_R_SUCCESS) {
return (result);
}
return (result);
if (getrlimit(unixresource, &rl) != 0) {
return (isc__errno2result(errno));
}
*value = rl.rlim_max;
return (ISC_R_SUCCESS);
}
isc_result_t
isc_resource_getcurlimit(isc_resource_t resource, isc_resourcevalue_t *value) {
int unixresult;
int unixresource;
struct rlimit rl;
isc_result_t result;
result = resource2rlim(resource, &unixresource);
if (result == ISC_R_SUCCESS) {
unixresult = getrlimit(unixresource, &rl);
INSIST(unixresult == 0);
*value = rl.rlim_cur;
if (result != ISC_R_SUCCESS) {
return (result);
}
return (result);
if (getrlimit(unixresource, &rl) != 0) {
return (isc__errno2result(errno));
}
*value = rl.rlim_cur;
return (ISC_R_SUCCESS);
}