mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 06:25:31 +00:00
3157. [tuning] Reduce the time spent in "rndc reconfig" by parsing
the config file before pausing the server. [RT #21373]
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: server.c,v 1.619 2011/09/06 22:29:32 smann Exp $ */
|
||||
/* $Id: server.c,v 1.620 2011/09/23 18:08:01 each Exp $ */
|
||||
|
||||
/*! \file */
|
||||
|
||||
@@ -4341,15 +4341,12 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
ns_cache_t *nsc;
|
||||
struct cfg_context *nzctx;
|
||||
int num_zones = 0;
|
||||
isc_boolean_t exclusive = ISC_FALSE;
|
||||
|
||||
ISC_LIST_INIT(viewlist);
|
||||
ISC_LIST_INIT(builtin_viewlist);
|
||||
ISC_LIST_INIT(cachelist);
|
||||
|
||||
/* Ensure exclusive access to configuration data. */
|
||||
result = isc_task_beginexclusive(server->task);
|
||||
RUNTIME_CHECK(result == ISC_R_SUCCESS);
|
||||
|
||||
/* Create the ACL configuration context */
|
||||
if (ns_g_aclconfctx != NULL)
|
||||
cfg_aclconfctx_detach(&ns_g_aclconfctx);
|
||||
@@ -4445,6 +4442,13 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
CHECK(result);
|
||||
}
|
||||
|
||||
/* Ensure exclusive access to configuration data. */
|
||||
if (!exclusive) {
|
||||
result = isc_task_beginexclusive(server->task);
|
||||
RUNTIME_CHECK(result == ISC_R_SUCCESS);
|
||||
exclusive = ISC_TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set process limits, which (usually) needs to be done as root.
|
||||
*/
|
||||
@@ -5212,7 +5216,8 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
adjust_interfaces(server, ns_g_mctx);
|
||||
|
||||
/* Relinquish exclusive access to configuration data. */
|
||||
isc_task_endexclusive(server->task);
|
||||
if (exclusive)
|
||||
isc_task_endexclusive(server->task);
|
||||
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER,
|
||||
ISC_LOG_DEBUG(1), "load_configuration: %s",
|
||||
|
Reference in New Issue
Block a user