]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Record how often DNS_R_COVERINGNSEC is returned from the cache
authorMark Andrews <marka@isc.org>
Wed, 27 Oct 2021 02:25:41 +0000 (13:25 +1100)
committerPetr Špaček <pspacek@isc.org>
Thu, 2 Dec 2021 13:18:41 +0000 (14:18 +0100)
reported as "covering nsec returned" when dumping cache stats
and as "CoveringNSEC" in json and xml cache statistics.

lib/dns/cache.c
lib/dns/include/dns/stats.h
lib/dns/rbtdb.c

index dbbe44e660f62de61b618eae5a88afb8bc92a32f..acf7767f1b451ed3334d4a08f2179cf5434adc75 100644 (file)
@@ -1260,6 +1260,9 @@ dns_cache_dumpstats(dns_cache_t *cache, FILE *fp) {
        fprintf(fp, "%20" PRIu64 " %s\n",
                values[dns_cachestatscounter_deletettl],
                "cache records deleted due to TTL expiration");
+       fprintf(fp, "%20" PRIu64 " %s\n",
+               values[dns_cachestatscounter_coveringnsec],
+               "covering nsec returned");
        fprintf(fp, "%20u %s\n", dns_db_nodecount(cache->db, dns_dbtree_main),
                "cache database nodes");
        fprintf(fp, "%20u %s\n", dns_db_nodecount(cache->db, dns_dbtree_nsec),
@@ -1328,6 +1331,8 @@ dns_cache_renderxml(dns_cache_t *cache, void *writer0) {
                        writer));
        TRY0(renderstat("DeleteTTL", values[dns_cachestatscounter_deletettl],
                        writer));
+       TRY0(renderstat("CoveringNSEC",
+                       values[dns_cachestatscounter_coveringnsec], writer));
 
        TRY0(renderstat("CacheNodes",
                        dns_db_nodecount(cache->db, dns_dbtree_main), writer));
@@ -1393,6 +1398,10 @@ dns_cache_renderjson(dns_cache_t *cache, void *cstats0) {
        CHECKMEM(obj);
        json_object_object_add(cstats, "DeleteTTL", obj);
 
+       obj = json_object_new_int64(values[dns_cachestatscounter_coveringnsec]);
+       CHECKMEM(obj);
+       json_object_object_add(cstats, "CoveringNSEC", obj);
+
        obj = json_object_new_int64(
                dns_db_nodecount(cache->db, dns_dbtree_main));
        CHECKMEM(obj);
index 4342fe41c5ddf3211ab085ced5af875e45ba5bc9..6e61d279b79065f1030dd7ff786b1c2068036fe7 100644 (file)
@@ -119,8 +119,9 @@ enum {
        dns_cachestatscounter_querymisses = 4,
        dns_cachestatscounter_deletelru = 5,
        dns_cachestatscounter_deletettl = 6,
+       dns_cachestatscounter_coveringnsec = 7,
 
-       dns_cachestatscounter_max = 7,
+       dns_cachestatscounter_max = 8,
 
        /*%
         * Query statistics counters (obsolete).
index a7e2a654b1ef09f1c6ea15a60bda96a96e33348f..4b954597dd81fac44032079428deba060425d97b 100644 (file)
@@ -786,13 +786,16 @@ update_cachestats(dns_rbtdb_t *rbtdb, isc_result_t result) {
        }
 
        switch (result) {
+       case DNS_R_COVERINGNSEC:
+               isc_stats_increment(rbtdb->cachestats,
+                                   dns_cachestatscounter_coveringnsec);
+               /* FALLTHROUGH */
        case ISC_R_SUCCESS:
        case DNS_R_CNAME:
        case DNS_R_DNAME:
        case DNS_R_DELEGATION:
        case DNS_R_NCACHENXDOMAIN:
        case DNS_R_NCACHENXRRSET:
-       case DNS_R_COVERINGNSEC:
                isc_stats_increment(rbtdb->cachestats,
                                    dns_cachestatscounter_hits);
                break;