From 81d661ffc0e95ca815afad84665b968641488543 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Fri, 6 Dec 2024 19:46:39 +0100 Subject: [PATCH] Revert "Attach dnssecsignstats, rcvquerystats, and requeststats" This reverts commit fb50a7115927e481b0a471de48dc668eb75af941. (cherry picked from commit 7a99d1baf8dbec6230d29ddc1c832ff90b57fcb7) --- bin/named/statschannel.c | 50 ++++++++---------------------- lib/dns/include/dns/zone.h | 13 ++++---- lib/dns/update.c | 7 +---- lib/dns/zone.c | 63 +++++++++++++------------------------- lib/ns/query.c | 13 +++----- lib/ns/update.c | 4 +-- lib/ns/xfrout.c | 4 +-- 7 files changed, 48 insertions(+), 106 deletions(-) diff --git a/bin/named/statschannel.c b/bin/named/statschannel.c index b49ff7513e..7110b85336 100644 --- a/bin/named/statschannel.c +++ b/bin/named/statschannel.c @@ -1290,9 +1290,6 @@ zone_xmlrender(dns_zone_t *zone, void *arg) { stats_dumparg_t dumparg; const char *ztype; isc_time_t timestamp; - isc_stats_t *zonestats = NULL; - dns_stats_t *rcvquerystats = NULL; - dns_stats_t *dnssecsignstats = NULL; statlevel = dns_zone_getstatlevel(zone); if (statlevel == dns_zonestat_none) { @@ -1357,11 +1354,14 @@ zone_xmlrender(dns_zone_t *zone, void *arg) { } if (statlevel == dns_zonestat_full) { + isc_stats_t *zonestats; isc_stats_t *gluecachestats; + dns_stats_t *rcvquerystats; + dns_stats_t *dnssecsignstats; uint64_t nsstat_values[ns_statscounter_max]; uint64_t gluecachestats_values[dns_gluecachestatscounter_max]; - dns_zone_getrequeststats(zone, &zonestats); + zonestats = dns_zone_getrequeststats(zone); if (zonestats != NULL) { TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counters")); @@ -1375,7 +1375,6 @@ zone_xmlrender(dns_zone_t *zone, void *arg) { nsstat_values, ISC_STATSDUMP_VERBOSE)); /* counters type="rcode"*/ TRY0(xmlTextWriterEndElement(writer)); - isc_stats_detach(&zonestats); } gluecachestats = dns_zone_getgluecachestats(zone); @@ -1396,7 +1395,7 @@ zone_xmlrender(dns_zone_t *zone, void *arg) { TRY0(xmlTextWriterEndElement(writer)); } - dns_zone_getrcvquerystats(zone, &rcvquerystats); + rcvquerystats = dns_zone_getrcvquerystats(zone); if (rcvquerystats != NULL) { TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counters")); @@ -1411,10 +1410,9 @@ zone_xmlrender(dns_zone_t *zone, void *arg) { /* counters type="qtype"*/ TRY0(xmlTextWriterEndElement(writer)); - dns_stats_detach(&rcvquerystats); } - dns_zone_getdnssecsignstats(zone, &dnssecsignstats); + dnssecsignstats = dns_zone_getdnssecsignstats(zone); if (dnssecsignstats != NULL) { /* counters type="dnssec-sign"*/ TRY0(xmlTextWriterStartElement(writer, @@ -1447,7 +1445,6 @@ zone_xmlrender(dns_zone_t *zone, void *arg) { /* counters type="dnssec-refresh"*/ TRY0(xmlTextWriterEndElement(writer)); - dns_stats_detach(&dnssecsignstats); } } @@ -1455,15 +1452,6 @@ zone_xmlrender(dns_zone_t *zone, void *arg) { return ISC_R_SUCCESS; cleanup: - if (zonestats != NULL) { - isc_stats_detach(&zonestats); - } - if (rcvquerystats != NULL) { - dns_stats_detach(&rcvquerystats); - } - if (dnssecsignstats != NULL) { - dns_stats_detach(&dnssecsignstats); - } isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL, NAMED_LOGMODULE_SERVER, ISC_LOG_ERROR, "Failed at zone_xmlrender()"); @@ -2348,9 +2336,6 @@ zone_jsonrender(dns_zone_t *zone, void *arg) { json_object *zoneobj = NULL; dns_zonestat_level_t statlevel; isc_time_t timestamp; - isc_stats_t *zonestats = NULL; - dns_stats_t *rcvquerystats = NULL; - dns_stats_t *dnssecsignstats = NULL; statlevel = dns_zone_getstatlevel(zone); if (statlevel == dns_zonestat_none) { @@ -2400,11 +2385,14 @@ zone_jsonrender(dns_zone_t *zone, void *arg) { } if (statlevel == dns_zonestat_full) { + isc_stats_t *zonestats; isc_stats_t *gluecachestats; + dns_stats_t *rcvquerystats; + dns_stats_t *dnssecsignstats; uint64_t nsstat_values[ns_statscounter_max]; uint64_t gluecachestats_values[dns_gluecachestatscounter_max]; - dns_zone_getrequeststats(zone, &zonestats); + zonestats = dns_zone_getrequeststats(zone); if (zonestats != NULL) { json_object *counters = json_object_new_object(); if (counters == NULL) { @@ -2455,7 +2443,7 @@ zone_jsonrender(dns_zone_t *zone, void *arg) { } } - dns_zone_getrcvquerystats(zone, &rcvquerystats); + rcvquerystats = dns_zone_getrcvquerystats(zone); if (rcvquerystats != NULL) { stats_dumparg_t dumparg; json_object *counters = json_object_new_object(); @@ -2479,7 +2467,7 @@ zone_jsonrender(dns_zone_t *zone, void *arg) { } } - dns_zone_getdnssecsignstats(zone, &dnssecsignstats); + dnssecsignstats = dns_zone_getdnssecsignstats(zone); if (dnssecsignstats != NULL) { stats_dumparg_t dumparg; json_object *sign_counters = json_object_new_object(); @@ -2535,15 +2523,6 @@ zone_jsonrender(dns_zone_t *zone, void *arg) { result = ISC_R_SUCCESS; cleanup: - if (zonestats != NULL) { - isc_stats_detach(&zonestats); - } - if (rcvquerystats != NULL) { - dns_stats_detach(&rcvquerystats); - } - if (dnssecsignstats != NULL) { - dns_stats_detach(&dnssecsignstats); - } if (zoneobj != NULL) { json_object_put(zoneobj); } @@ -4121,14 +4100,12 @@ named_stats_dump(named_server_t *server, FILE *fp) { result == ISC_R_SUCCESS; next = NULL, result = dns_zone_next(zone, &next), zone = next) { - isc_stats_t *zonestats = NULL; - dns_zone_getrequeststats(zone, &zonestats); + isc_stats_t *zonestats = dns_zone_getrequeststats(zone); if (zonestats != NULL) { char zonename[DNS_NAME_FORMATSIZE]; view = dns_zone_getview(zone); if (view == NULL) { - isc_stats_detach(&zonestats); continue; } @@ -4144,7 +4121,6 @@ named_stats_dump(named_server_t *server, FILE *fp) { NULL, nsstats_desc, ns_statscounter_max, nsstats_index, nsstat_values, 0); - isc_stats_detach(&zonestats); } } diff --git a/lib/dns/include/dns/zone.h b/lib/dns/include/dns/zone.h index f5a753c531..9cb714b022 100644 --- a/lib/dns/include/dns/zone.h +++ b/lib/dns/include/dns/zone.h @@ -2082,20 +2082,19 @@ dns_zone_setdnssecsignstats(dns_zone_t *zone, dns_stats_t *stats); *\li stats is a valid statistics. */ -void -dns_zone_getrequeststats(dns_zone_t *zone, isc_stats_t **statsp); +isc_stats_t * +dns_zone_getrequeststats(dns_zone_t *zone); -void -dns_zone_getrcvquerystats(dns_zone_t *zone, dns_stats_t **statsp); +dns_stats_t * +dns_zone_getrcvquerystats(dns_zone_t *zone); -void -dns_zone_getdnssecsignstats(dns_zone_t *zone, dns_stats_t **statsp); +dns_stats_t * +dns_zone_getdnssecsignstats(dns_zone_t *zone); /*%< * Get the additional statistics for zone, if one is installed. * * Requires: * \li 'zone' to be a valid zone. - * \li 'statsp' to be non-NULL and *stastp to be NULL. * * Returns: * \li when available, a pointer to the statistics set installed in zone; diff --git a/lib/dns/update.c b/lib/dns/update.c index 447cb0562d..4d554f263b 100644 --- a/lib/dns/update.c +++ b/lib/dns/update.c @@ -1115,7 +1115,7 @@ add_sigs(dns_update_log_t *log, dns_zone_t *zone, dns_db_t *db, dns_kasp_t *kasp = dns_zone_getkasp(zone); dns_rdataset_t rdataset; dns_rdata_t sig_rdata = DNS_RDATA_INIT; - dns_stats_t *dnssecsignstats = NULL; + dns_stats_t *dnssecsignstats = dns_zone_getdnssecsignstats(zone); isc_buffer_t buffer; unsigned char data[1024]; /* XXX */ unsigned int i; @@ -1129,8 +1129,6 @@ add_sigs(dns_update_log_t *log, dns_zone_t *zone, dns_db_t *db, offlineksk = dns_kasp_offlineksk(kasp); } - dns_zone_getdnssecsignstats(zone, &dnssecsignstats); - dns_rdataset_init(&rdataset); isc_buffer_init(&buffer, data, sizeof(data)); @@ -1286,9 +1284,6 @@ add_sigs(dns_update_log_t *log, dns_zone_t *zone, dns_db_t *db, } failure: - if (dnssecsignstats != NULL) { - dns_stats_detach(&dnssecsignstats); - } if (dns_rdataset_isassociated(&rdataset)) { dns_rdataset_disassociate(&rdataset); } diff --git a/lib/dns/zone.c b/lib/dns/zone.c index d63459124a..2e1bce82e4 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -6809,7 +6809,7 @@ add_sigs(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, dns_zone_t *zone, isc_stdtime_t inception, isc_stdtime_t expire) { isc_result_t result; dns_dbnode_t *node = NULL; - dns_stats_t *dnssecsignstats = NULL; + dns_stats_t *dnssecsignstats; dns_rdataset_t rdataset; dns_rdata_t sig_rdata = DNS_RDATA_INIT; unsigned char data[1024]; /* XXX */ @@ -6984,7 +6984,7 @@ add_sigs(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, dns_zone_t *zone, isc_buffer_init(&buffer, data, sizeof(data)); /* Update DNSSEC sign statistics. */ - dns_zone_getdnssecsignstats(zone, &dnssecsignstats); + dnssecsignstats = dns_zone_getdnssecsignstats(zone); if (dnssecsignstats != NULL) { /* Generated a new signature. */ dns_dnssecsignstats_increment(dnssecsignstats, @@ -6996,7 +6996,6 @@ add_sigs(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, dns_zone_t *zone, dnssecsignstats, ID(keys[i]), (uint8_t)ALG(keys[i]), dns_dnssecsignstats_refresh); - dns_stats_detach(&dnssecsignstats); } } @@ -7468,7 +7467,7 @@ sign_a_node(dns_db_t *db, dns_zone_t *zone, dns_name_t *name, dns_rdatasetiter_t *iterator = NULL; dns_rdataset_t rdataset; dns_rdata_t rdata = DNS_RDATA_INIT; - dns_stats_t *dnssecsignstats = NULL; + dns_stats_t *dnssecsignstats; bool offlineksk = false; isc_buffer_t buffer; unsigned char data[1024]; @@ -7601,7 +7600,7 @@ sign_a_node(dns_db_t *db, dns_zone_t *zone, dns_name_t *name, dns_rdata_reset(&rdata); /* Update DNSSEC sign statistics. */ - dns_zone_getdnssecsignstats(zone, &dnssecsignstats); + dnssecsignstats = dns_zone_getdnssecsignstats(zone); if (dnssecsignstats != NULL) { /* Generated a new signature. */ dns_dnssecsignstats_increment(dnssecsignstats, ID(key), @@ -7611,7 +7610,6 @@ sign_a_node(dns_db_t *db, dns_zone_t *zone, dns_name_t *name, dns_dnssecsignstats_increment( dnssecsignstats, ID(key), ALG(key), dns_dnssecsignstats_refresh); - dns_stats_detach(&dnssecsignstats); } (*signatures)--; @@ -19751,27 +19749,15 @@ dns_zone_setdnssecsignstats(dns_zone_t *zone, dns_stats_t *stats) { UNLOCK_ZONE(zone); } -static void -getdnssecsignstats(dns_zone_t *zone, dns_stats_t **statsp) { - REQUIRE(statsp != NULL && *statsp == NULL); - if (zone->dnssecsignstats != NULL) { - dns_stats_attach(zone->dnssecsignstats, statsp); - } -} -void -dns_zone_getdnssecsignstats(dns_zone_t *zone, dns_stats_t **statsp) { +dns_stats_t * +dns_zone_getdnssecsignstats(dns_zone_t *zone) { REQUIRE(DNS_ZONE_VALID(zone)); - LOCK_ZONE(zone); - getdnssecsignstats(zone, statsp); - UNLOCK_ZONE(zone); + return zone->dnssecsignstats; } -void -dns_zone_getrequeststats(dns_zone_t *zone, isc_stats_t **statsp) { - REQUIRE(DNS_ZONE_VALID(zone)); - REQUIRE(statsp != NULL && *statsp == NULL); - +isc_stats_t * +dns_zone_getrequeststats(dns_zone_t *zone) { /* * We don't lock zone for efficiency reason. This is not catastrophic * because requeststats must always be valid when requeststats_on is @@ -19780,27 +19766,24 @@ dns_zone_getrequeststats(dns_zone_t *zone, isc_stats_t **statsp) { * false, or some cannot be incremented just after the statistics are * installed, but it shouldn't matter much in practice. */ - LOCK_ZONE(zone); - if (zone->requeststats_on && zone->requeststats != NULL) { - isc_stats_attach(zone->requeststats, statsp); + if (zone->requeststats_on) { + return zone->requeststats; + } else { + return NULL; } - UNLOCK_ZONE(zone); } /* * Return the received query stats bucket * see note from dns_zone_getrequeststats() */ -void -dns_zone_getrcvquerystats(dns_zone_t *zone, dns_stats_t **statsp) { - REQUIRE(DNS_ZONE_VALID(zone)); - REQUIRE(statsp != NULL && *statsp == NULL); - - LOCK_ZONE(zone); - if (zone->requeststats_on && zone->rcvquerystats != NULL) { - dns_stats_attach(zone->rcvquerystats, statsp); +dns_stats_t * +dns_zone_getrcvquerystats(dns_zone_t *zone) { + if (zone->requeststats_on) { + return zone->rcvquerystats; + } else { + return NULL; } - UNLOCK_ZONE(zone); } void @@ -22671,9 +22654,8 @@ zone_rekey(dns_zone_t *zone) { if (commit) { dns_difftuple_t *tuple; - dns_stats_t *dnssecsignstats = NULL; - - getdnssecsignstats(zone, &dnssecsignstats); + dns_stats_t *dnssecsignstats = + dns_zone_getdnssecsignstats(zone); DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NEEDNOTIFY); @@ -22713,9 +22695,6 @@ zone_rekey(dns_zone_t *zone) { } } } - if (dnssecsignstats != NULL) { - dns_stats_detach(&dnssecsignstats); - } if (fullsign) { /* diff --git a/lib/ns/query.c b/lib/ns/query.c index f5ebf6242b..a263dc9828 100644 --- a/lib/ns/query.c +++ b/lib/ns/query.c @@ -522,7 +522,7 @@ inc_stats(ns_client_t *client, isc_statscounter_t counter) { dns_zone_t *zone = client->query.authzone; dns_rdatatype_t qtype; dns_rdataset_t *rdataset; - isc_stats_t *zonestats = NULL; + isc_stats_t *zonestats; dns_stats_t *querystats = NULL; ns_stats_increment(client->manager->sctx->nsstats, counter); @@ -532,11 +532,10 @@ inc_stats(ns_client_t *client, isc_statscounter_t counter) { } /* Do regular response type stats */ - dns_zone_getrequeststats(zone, &zonestats); + zonestats = dns_zone_getrequeststats(zone); if (zonestats != NULL) { isc_stats_increment(zonestats, counter); - isc_stats_detach(&zonestats); } /* Do query type statistics @@ -545,14 +544,13 @@ inc_stats(ns_client_t *client, isc_statscounter_t counter) { * answer counter, preventing double-counting. */ if (counter == ns_statscounter_authans) { - dns_zone_getrcvquerystats(zone, &querystats); + querystats = dns_zone_getrcvquerystats(zone); if (querystats != NULL) { rdataset = ISC_LIST_HEAD(client->query.qname->list); if (rdataset != NULL) { qtype = rdataset->type; dns_rdatatypestats_increment(querystats, qtype); } - dns_stats_detach(&querystats); } } } @@ -1254,7 +1252,7 @@ rpz_log_rewrite(ns_client_t *client, bool disabled, dns_rpz_policy_t policy, const char *s1 = cname_buf, *s2 = cname_buf; dns_rdataset_t *rdataset; dns_rpz_st_t *st; - isc_stats_t *zonestats = NULL; + isc_stats_t *zonestats; /* * Count enabled rewrites in the global counter. @@ -1265,11 +1263,10 @@ rpz_log_rewrite(ns_client_t *client, bool disabled, dns_rpz_policy_t policy, ns_statscounter_rpz_rewrites); } if (p_zone != NULL) { - dns_zone_getrequeststats(p_zone, &zonestats); + zonestats = dns_zone_getrequeststats(p_zone); if (zonestats != NULL) { isc_stats_increment(zonestats, ns_statscounter_rpz_rewrites); - isc_stats_detach(&zonestats); } } diff --git a/lib/ns/update.c b/lib/ns/update.c index c2cb600cfc..51d7f2fc04 100644 --- a/lib/ns/update.c +++ b/lib/ns/update.c @@ -329,11 +329,9 @@ inc_stats(ns_client_t *client, dns_zone_t *zone, isc_statscounter_t counter) { ns_stats_increment(client->manager->sctx->nsstats, counter); if (zone != NULL) { - isc_stats_t *zonestats = NULL; - dns_zone_getrequeststats(zone, &zonestats); + isc_stats_t *zonestats = dns_zone_getrequeststats(zone); if (zonestats != NULL) { isc_stats_increment(zonestats, counter); - isc_stats_detach(&zonestats); } } } diff --git a/lib/ns/xfrout.c b/lib/ns/xfrout.c index 172dc43ee9..4b0991305b 100644 --- a/lib/ns/xfrout.c +++ b/lib/ns/xfrout.c @@ -111,11 +111,9 @@ static void inc_stats(ns_client_t *client, dns_zone_t *zone, isc_statscounter_t counter) { ns_stats_increment(client->manager->sctx->nsstats, counter); if (zone != NULL) { - isc_stats_t *zonestats = NULL; - dns_zone_getrequeststats(zone, &zonestats); + isc_stats_t *zonestats = dns_zone_getrequeststats(zone); if (zonestats != NULL) { isc_stats_increment(zonestats, counter); - isc_stats_detach(&zonestats); } } }