diff --git a/CHANGES b/CHANGES index 7319bbc7ee..29506fb8aa 100644 --- a/CHANGES +++ b/CHANGES @@ -30,6 +30,9 @@ favor of rwlocked access to localhost and localnets members of dns_aclenv_t structure. [GL #3229] +5842. [cleanup] Remove the task exclusive mode use in ns_clientmgr. + [GL #3230] + --- 9.18.2 released --- 5856. [bug] The "starting maxtime timer" message related to outgoing diff --git a/lib/ns/client.c b/lib/ns/client.c index d21e6be59c..42bfdfd8f1 100644 --- a/lib/ns/client.c +++ b/lib/ns/client.c @@ -2437,13 +2437,8 @@ clientmgr_destroy(ns_clientmgr_t *manager) { dns_aclenv_detach(&manager->aclenv); - isc_mutex_destroy(&manager->lock); isc_mutex_destroy(&manager->reclock); - if (manager->excl != NULL) { - isc_task_detach(&manager->excl); - } - isc_task_detach(&manager->task); ns_server_detach(&manager->sctx); @@ -2464,13 +2459,6 @@ ns_clientmgr_create(ns_server_t *sctx, isc_taskmgr_t *taskmgr, manager = isc_mem_get(mctx, sizeof(*manager)); *manager = (ns_clientmgr_t){ .magic = 0, .mctx = mctx }; - result = isc_taskmgr_excltask(taskmgr, &manager->excl); - if (result != ISC_R_SUCCESS) { - isc_mem_put(mctx, manager, sizeof(*manager)); - return (result); - } - - isc_mutex_init(&manager->lock); isc_mutex_init(&manager->reclock); manager->taskmgr = taskmgr; @@ -2479,7 +2467,6 @@ ns_clientmgr_create(ns_server_t *sctx, isc_taskmgr_t *taskmgr, dns_aclenv_attach(aclenv, &manager->aclenv); - manager->exiting = false; result = isc_task_create_bound(manager->taskmgr, 20, &manager->task, manager->tid); RUNTIME_CHECK(result == ISC_R_SUCCESS); @@ -2502,33 +2489,16 @@ ns_clientmgr_create(ns_server_t *sctx, isc_taskmgr_t *taskmgr, void ns_clientmgr_destroy(ns_clientmgr_t **managerp) { - isc_result_t result; ns_clientmgr_t *manager; - bool unlock = false; REQUIRE(managerp != NULL); + REQUIRE(VALID_MANAGER(*managerp)); + manager = *managerp; *managerp = NULL; - REQUIRE(VALID_MANAGER(manager)); MTRACE("destroy"); - /* - * Check for success because we may already be task-exclusive - * at this point. Only if we succeed at obtaining an exclusive - * lock now will we need to relinquish it later. - */ - result = isc_task_beginexclusive(manager->excl); - if (result == ISC_R_SUCCESS) { - unlock = true; - } - - manager->exiting = true; - - if (unlock) { - isc_task_endexclusive(manager->excl); - } - if (isc_refcount_decrement(&manager->references) == 1) { clientmgr_destroy(manager); } diff --git a/lib/ns/include/ns/client.h b/lib/ns/include/ns/client.h index c5d8e86cf7..67d89a8922 100644 --- a/lib/ns/include/ns/client.h +++ b/lib/ns/include/ns/client.h @@ -147,7 +147,6 @@ struct ns_clientmgr { ns_server_t *sctx; isc_taskmgr_t *taskmgr; isc_timermgr_t *timermgr; - isc_task_t *excl; isc_refcount_t references; int tid; @@ -156,10 +155,6 @@ struct ns_clientmgr { dns_aclenv_t *aclenv; - /* Lock covers manager state. */ - isc_mutex_t lock; - bool exiting; - /* Lock covers the recursing list */ isc_mutex_t reclock; client_list_t recursing; /*%< Recursing clients */