diff --git a/CHANGES b/CHANGES
index cbbe452f26..c2eaf28334 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+5247. [cleanup] The 'cleaning-interval' option has been removed.
+ [GL !1731]
+
5246. [func] Log TSIG if appropriate in 'sending notify to' message.
[GL #1058]
diff --git a/bin/named/config.c b/bin/named/config.c
index f9a8db2f0b..add0a46e98 100644
--- a/bin/named/config.c
+++ b/bin/named/config.c
@@ -140,7 +140,6 @@ options {\n\
check-names response ignore;\n\
check-names slave warn;\n\
check-spf warn;\n\
- cleaning-interval 0; /* now meaningless */\n\
clients-per-query 10;\n\
dnssec-accept-expired no;\n\
dnssec-validation " VALIDATION_DEFAULT "; \n"
diff --git a/bin/named/server.c b/bin/named/server.c
index 5653358aba..a0357dcffd 100644
--- a/bin/named/server.c
+++ b/bin/named/server.c
@@ -1804,7 +1804,6 @@ cache_reusable(dns_view_t *originview, dns_view_t *view,
static bool
cache_sharable(dns_view_t *originview, dns_view_t *view,
bool new_zero_no_soattl,
- unsigned int new_cleaning_interval,
uint64_t new_max_cache_size,
uint32_t new_stale_ttl)
{
@@ -1819,9 +1818,7 @@ cache_sharable(dns_view_t *originview, dns_view_t *view,
* Check other cache related parameters that must be consistent among
* the sharing views.
*/
- if (dns_cache_getcleaninginterval(originview->cache) !=
- new_cleaning_interval ||
- dns_cache_getservestalettl(originview->cache) != new_stale_ttl ||
+ if (dns_cache_getservestalettl(originview->cache) != new_stale_ttl ||
dns_cache_getcachesize(originview->cache) != new_max_cache_size) {
return (false);
}
@@ -3800,7 +3797,6 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
in_port_t port;
dns_cache_t *cache = NULL;
isc_result_t result;
- unsigned int cleaning_interval;
size_t max_cache_size;
uint32_t max_cache_size_percent = 0;
size_t max_adb_size;
@@ -4014,11 +4010,6 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
* Obtain configuration parameters that affect the decision of whether
* we can reuse/share an existing cache.
*/
- obj = NULL;
- result = named_config_get(maps, "cleaning-interval", &obj);
- INSIST(result == ISC_R_SUCCESS);
- cleaning_interval = cfg_obj_asuint32(obj) * 60;
-
obj = NULL;
result = named_config_get(maps, "max-cache-size", &obj);
INSIST(result == ISC_R_SUCCESS);
@@ -4306,8 +4297,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
nsc = cachelist_find(cachelist, cachename, view->rdclass);
if (nsc != NULL) {
if (!cache_sharable(nsc->primaryview, view, zero_no_soattl,
- cleaning_interval, max_cache_size,
- max_stale_ttl))
+ max_cache_size, max_stale_ttl))
{
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
NAMED_LOGMODULE_SERVER, ISC_LOG_ERROR,
@@ -4405,7 +4395,6 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
CHECK(dns_cache_load(cache));
}
- dns_cache_setcleaninginterval(cache, cleaning_interval);
dns_cache_setcachesize(cache, max_cache_size);
dns_cache_setservestalettl(cache, max_stale_ttl);
diff --git a/bin/tests/named.conf b/bin/tests/named.conf
index c9be056e77..edb9af2fb2 100644
--- a/bin/tests/named.conf
+++ b/bin/tests/named.conf
@@ -174,7 +174,6 @@ options {
files 230;
max-cache-size 1m;
stacksize 231;
- cleaning-interval 1000;
heartbeat-interval 1001;
interface-interval 1002;
statistics-interval 1003;
@@ -285,7 +284,6 @@ view "test-view" in {
query-source-v6 address 6:6:6:6:6:6:6:6 port *;
max-transfer-time-out 45;
max-transfer-idle-out 55;
- cleaning-interval 100;
min-roots 3;
lame-ttl 477;
max-ncache-ttl 333;
diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml
index b34665c584..eef1263b57 100644
--- a/doc/arm/Bv9ARM-book.xml
+++ b/doc/arm/Bv9ARM-book.xml
@@ -4275,7 +4275,6 @@ badresp:1,adberr:0,findfail:0,valfail:0]
configurable options be consistent among these
views:
check-names,
- cleaning-interval,
dnssec-accept-expired,
dnssec-validation,
max-cache-ttl,
@@ -8403,14 +8402,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
cleaning-interval
- This interval is effectively obsolete. Previously,
- the server would remove expired resource records
- from the cache every cleaning-interval minutes.
- BIND 9 now manages cache
- memory in a more sophisticated manner and does not
- rely on the periodic cleaning any more.
- Specifying this option therefore has no effect on
- the server's behavior.
+ This option is obsolete.
diff --git a/doc/arm/notes.xml b/doc/arm/notes.xml
index 95ecf3c79e..28da1f7753 100644
--- a/doc/arm/notes.xml
+++ b/doc/arm/notes.xml
@@ -125,6 +125,12 @@
if signatures and other DNSSEC data are present. [GL #866]
+
+
+ The cleaning-interval option has been
+ removed. [GL !1731]
+
+
diff --git a/lib/bind9/check.c b/lib/bind9/check.c
index aaa625df8a..45d179bbc1 100644
--- a/lib/bind9/check.c
+++ b/lib/bind9/check.c
@@ -864,7 +864,6 @@ check_options(const cfg_obj_t *options, isc_log_t *logctx, isc_mem_t *mctx,
* (scale * value) <= UINT32_MAX
*/
static intervaltable intervals[] = {
- { "cleaning-interval", 60, 28 * 24 * 60 }, /* 28 days */
{ "heartbeat-interval", 60, 28 * 24 * 60 }, /* 28 days */
{ "interface-interval", 60, 28 * 24 * 60 }, /* 28 days */
{ "max-transfer-idle-in", 60, 28 * 24 * 60 }, /* 28 days */
diff --git a/lib/dns/cache.c b/lib/dns/cache.c
index 0602793f98..c795c5a057 100644
--- a/lib/dns/cache.c
+++ b/lib/dns/cache.c
@@ -99,9 +99,6 @@ struct cache_cleaner {
dns_cache_t *cache;
isc_task_t *task;
- unsigned int cleaning_interval; /*% The cleaning-interval from
- named.conf, in seconds. */
- isc_timer_t *cleaning_timer;
isc_event_t *resched_event; /*% Sent by cleaner task to
itself to reschedule */
isc_event_t *overmem_event;
@@ -153,9 +150,6 @@ static isc_result_t
cache_cleaner_init(dns_cache_t *cache, isc_taskmgr_t *taskmgr,
isc_timermgr_t *timermgr, cache_cleaner_t *cleaner);
-static void
-cleaning_timer_action(isc_task_t *task, isc_event_t *event);
-
static void
incremental_cleaning_action(isc_task_t *task, isc_event_t *event);
@@ -521,56 +515,6 @@ dns_cache_dump(dns_cache_t *cache) {
}
-void
-dns_cache_setcleaninginterval(dns_cache_t *cache, unsigned int t) {
- isc_interval_t interval;
- isc_result_t result;
-
- LOCK(&cache->lock);
-
- /*
- * It may be the case that the cache has already shut down.
- * If so, it has no timer.
- */
- if (cache->cleaner.cleaning_timer == NULL)
- goto unlock;
-
- cache->cleaner.cleaning_interval = t;
-
- if (t == 0) {
- result = isc_timer_reset(cache->cleaner.cleaning_timer,
- isc_timertype_inactive,
- NULL, NULL, true);
- } else {
- isc_interval_set(&interval, cache->cleaner.cleaning_interval,
- 0);
- result = isc_timer_reset(cache->cleaner.cleaning_timer,
- isc_timertype_ticker,
- NULL, &interval, false);
- }
- if (result != ISC_R_SUCCESS)
- isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
- DNS_LOGMODULE_CACHE, ISC_LOG_WARNING,
- "could not set cache cleaning interval: %s",
- isc_result_totext(result));
-
- unlock:
- UNLOCK(&cache->lock);
-}
-
-unsigned int
-dns_cache_getcleaninginterval(dns_cache_t *cache) {
- unsigned int t;
-
- REQUIRE(VALID_CACHE(cache));
-
- LOCK(&cache->lock);
- t = cache->cleaner.cleaning_interval;
- UNLOCK(&cache->lock);
-
- return (t);
-}
-
const char *
dns_cache_getname(dns_cache_t *cache) {
REQUIRE(VALID_CACHE(cache));
@@ -599,10 +543,8 @@ cache_cleaner_init(dns_cache_t *cache, isc_taskmgr_t *taskmgr,
cleaner->replaceiterator = false;
cleaner->task = NULL;
- cleaner->cleaning_timer = NULL;
cleaner->resched_event = NULL;
cleaner->overmem_event = NULL;
- cleaner->cleaning_interval = 0; /* Initially turned off. */
result = dns_db_createiterator(cleaner->cache->db, false,
&cleaner->iterator);
@@ -631,18 +573,6 @@ cache_cleaner_init(dns_cache_t *cache, isc_taskmgr_t *taskmgr,
goto cleanup;
}
- result = isc_timer_create(timermgr, isc_timertype_inactive,
- NULL, NULL, cleaner->task,
- cleaning_timer_action, cleaner,
- &cleaner->cleaning_timer);
- if (result != ISC_R_SUCCESS) {
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "isc_timer_create() failed: %s",
- dns_result_totext(result));
- result = ISC_R_UNEXPECTED;
- goto cleanup;
- }
-
cleaner->resched_event =
isc_event_allocate(cache->mctx, cleaner,
DNS_EVENT_CACHECLEAN,
@@ -671,8 +601,6 @@ cache_cleaner_init(dns_cache_t *cache, isc_taskmgr_t *taskmgr,
isc_event_free(&cleaner->overmem_event);
if (cleaner->resched_event != NULL)
isc_event_free(&cleaner->resched_event);
- if (cleaner->cleaning_timer != NULL)
- isc_timer_detach(&cleaner->cleaning_timer);
if (cleaner->task != NULL)
isc_task_detach(&cleaner->task);
if (cleaner->iterator != NULL)
@@ -748,9 +676,6 @@ end_cleaning(cache_cleaner_t *cleaner, isc_event_t *event) {
if (result != ISC_R_SUCCESS)
dns_dbiterator_destroy(&cleaner->iterator);
- dns_cache_setcleaninginterval(cleaner->cache,
- cleaner->cleaning_interval);
-
isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, DNS_LOGMODULE_CACHE,
ISC_LOG_DEBUG(1), "end cache cleaning, mem inuse %lu",
(unsigned long)isc_mem_inuse(cleaner->cache->mctx));
@@ -759,28 +684,6 @@ end_cleaning(cache_cleaner_t *cleaner, isc_event_t *event) {
cleaner->resched_event = event;
}
-/*
- * This is run once for every cache-cleaning-interval as defined in named.conf.
- */
-static void
-cleaning_timer_action(isc_task_t *task, isc_event_t *event) {
- cache_cleaner_t *cleaner = event->ev_arg;
-
- UNUSED(task);
-
- INSIST(task == cleaner->task);
- INSIST(event->ev_type == ISC_TIMEREVENT_TICK);
-
- isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, DNS_LOGMODULE_CACHE,
- ISC_LOG_DEBUG(1), "cache cleaning timer fired, "
- "cleaner state = %d", cleaner->state);
-
- if (cleaner->state == cleaner_s_idle)
- begin_cleaning(cleaner);
-
- isc_event_free(&event);
-}
-
/*
* This is called when the cache either surpasses its upper limit
* or shrinks beyond its lower limit.
@@ -1123,14 +1026,6 @@ cleaner_shutdown_action(isc_task_t *task, isc_event_t *event) {
if (cache->references == 0)
should_free = true;
- /*
- * By detaching the timer in the context of its task,
- * we are guaranteed that there will be no further timer
- * events.
- */
- if (cache->cleaner.cleaning_timer != NULL)
- isc_timer_detach(&cache->cleaner.cleaning_timer);
-
/* Make sure we don't reschedule anymore. */
(void)isc_task_purge(task, NULL, DNS_EVENT_CACHECLEAN, NULL);
diff --git a/lib/dns/include/dns/cache.h b/lib/dns/include/dns/cache.h
index cd1d518941..68667c7fe1 100644
--- a/lib/dns/include/dns/cache.h
+++ b/lib/dns/include/dns/cache.h
@@ -219,18 +219,6 @@ dns_cache_clean(dns_cache_t *cache, isc_stdtime_t now);
* references.
*/
-void
-dns_cache_setcleaninginterval(dns_cache_t *cache, unsigned int interval);
-/*%<
- * Set the periodic cache cleaning interval to 'interval' seconds.
- */
-
-unsigned int
-dns_cache_getcleaninginterval(dns_cache_t *cache);
-/*%<
- * Get the periodic cache cleaning interval to 'interval' seconds.
- */
-
const char *
dns_cache_getname(dns_cache_t *cache);
/*%<
diff --git a/lib/dns/win32/libdns.def.in b/lib/dns/win32/libdns.def.in
index 9c2e459b5d..a178184060 100644
--- a/lib/dns/win32/libdns.def.in
+++ b/lib/dns/win32/libdns.def.in
@@ -82,7 +82,6 @@ dns_cache_flush
dns_cache_flushname
dns_cache_flushnode
dns_cache_getcachesize
-dns_cache_getcleaninginterval
dns_cache_getname
dns_cache_getservestalettl
dns_cache_getstats
@@ -94,7 +93,6 @@ dns_cache_renderjson
dns_cache_renderxml
@END LIBXML2
dns_cache_setcachesize
-dns_cache_setcleaninginterval
dns_cache_setfilename
dns_cache_setservestalettl
dns_cache_updatestats
diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c
index 1e53a39a78..1d2aa9afd7 100644
--- a/lib/isccfg/namedconf.c
+++ b/lib/isccfg/namedconf.c
@@ -1846,7 +1846,7 @@ view_clauses[] = {
{ "cache-file", &cfg_type_qstring, 0 },
{ "catalog-zones", &cfg_type_catz, 0 },
{ "check-names", &cfg_type_checknames, CFG_CLAUSEFLAG_MULTI },
- { "cleaning-interval", &cfg_type_uint32, 0 },
+ { "cleaning-interval", &cfg_type_uint32, CFG_CLAUSEFLAG_OBSOLETE },
{ "clients-per-query", &cfg_type_uint32, 0 },
{ "deny-answer-addresses", &cfg_type_denyaddresses, 0 },
{ "deny-answer-aliases", &cfg_type_denyaliases, 0 },