mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 22:15:20 +00:00
incremental cleaning should actually clean.
end_cleaning wants busy not idle
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: cache.c,v 1.41 2001/06/07 18:31:54 gson Exp $ */
|
||||
/* $Id: cache.c,v 1.42 2001/06/27 14:48:21 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
* CLEANERINTERVAL is the minimum amount of time between passes.
|
||||
*/
|
||||
#define DNS_CACHE_MINSIZE 2097152 /* Bytes. 2097152 = 2 MB */
|
||||
#define DNS_CACHE_CLEANERINCREMENT 100 /* Number of nodes. */
|
||||
#define DNS_CACHE_CLEANERINCREMENT 1000 /* Number of nodes. */
|
||||
#define DNS_CACHE_CLEANERINTERVAL 6 /* Seconds. */
|
||||
|
||||
/***
|
||||
@@ -681,6 +681,7 @@ incremental_cleaning_action(isc_task_t *task, isc_event_t *event) {
|
||||
isc_interval_t interval;
|
||||
isc_result_t result;
|
||||
int n_names;
|
||||
isc_stdtime_t now;
|
||||
|
||||
UNUSED(task);
|
||||
|
||||
@@ -689,6 +690,7 @@ incremental_cleaning_action(isc_task_t *task, isc_event_t *event) {
|
||||
event->ev_type == ISC_TIMEREVENT_TICK);
|
||||
|
||||
if (cleaner->state == cleaner_s_done) {
|
||||
cleaner->state = cleaner_s_busy;
|
||||
end_cleaning(cleaner, event);
|
||||
return;
|
||||
}
|
||||
@@ -699,6 +701,8 @@ incremental_cleaning_action(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
REQUIRE(DNS_DBITERATOR_VALID(cleaner->iterator));
|
||||
|
||||
isc_stdtime_get(&now);
|
||||
|
||||
while (n_names-- > 0) {
|
||||
dns_dbnode_t *node = NULL;
|
||||
|
||||
@@ -713,6 +717,18 @@ incremental_cleaning_action(isc_task_t *task, isc_event_t *event) {
|
||||
return;
|
||||
}
|
||||
|
||||
result = dns_db_expirenode(cleaner->cache->db, node, now);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
||||
"cache cleaner: "
|
||||
"incremental_cleaning_action() "
|
||||
"failed: %s",
|
||||
dns_result_totext(result));
|
||||
/*
|
||||
* Continue anyway.
|
||||
*/
|
||||
}
|
||||
|
||||
/*
|
||||
* The node was not needed, but was required by
|
||||
* dns_dbiterator_current(). Give up its reference.
|
||||
|
Reference in New Issue
Block a user