]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
switch notimpStats to array, thanks @rgacogne
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Mon, 9 Oct 2023 18:08:53 +0000 (20:08 +0200)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Thu, 19 Oct 2023 10:24:05 +0000 (12:24 +0200)
pdns/ixfrdist-stats.cc
pdns/ixfrdist-stats.hh
pdns/ixfrdist.cc
regression-tests.ixfrdist/test_Stats.py

index 0a545c59c177427d1a0f28dbd7d5e19621dc897c..b0db5f3294fdb40bba764cd275d8da4c20dc9bcf 100644 (file)
@@ -90,8 +90,12 @@ std::string ixfrdistStats::getStats() {
     stats<<"# TYPE "<<prefix<<"notimp counter"<<std::endl;
   }
 
-  for (auto const &d : notimpStats) {
-    stats<<prefix<<"notimp{opcode=\""<<d.first<<"\"} "<<d.second<<std::endl;
+  for (std::size_t i = 0; i < notimpStats.size() ; i++) {
+    auto val = notimpStats.at(i).load();
+
+    if (val > 0) {
+      stats<<prefix<<"notimp{opcode=\""<<Opcode::to_s(i)<<"\"} "<<val<<std::endl;
+    }
   }
 
   stats<<"# HELP "<<prefix<<"unknown_domain_inqueries_total Number of queries received for domains unknown to us"<<std::endl;
index cb1f402d71ea48a60d75d87f90762f87f527b4b5..f9dbe828a6f4a966f22564fda494c1d079155125 100644 (file)
@@ -71,9 +71,9 @@ class ixfrdistStats {
       progStats.unknownDomainInQueries += 1;
     }
 
-    void incrementNotImplemented(const string& opcode)
+    void incrementNotImplemented(uint8_t opcode)
     {
-      notimpStats[opcode] ++;
+      notimpStats.at(opcode) ++;
     }
 
   private:
@@ -99,7 +99,7 @@ class ixfrdistStats {
     };
 
     std::map<DNSName, perDomainStat> domainStats;
-    std::map<string, std::atomic<uint64_t>> notimpStats;
+    std::array<std::atomic<uint64_t>, 16> notimpStats;
     programStats progStats;
 
     std::map<DNSName, perDomainStat>::iterator getRegisteredDomain(const DNSName& d) {
index 52b6599d1c63751332f92d81ccaccb8ef0e82547..730b79b5224042eb4df7b594b06258b1e13410d7 100644 (file)
@@ -959,7 +959,7 @@ try
     g_stats.incrementUnknownDomainInQueries(mdp.d_qname);
     makeRefusedPacket(mdp, packet);
   } else if (respt == ResponseType::RefusedOpcode) {
-    g_stats.incrementNotImplemented(Opcode::to_s(mdp.d_header.opcode));
+    g_stats.incrementNotImplemented(mdp.d_header.opcode);
     makeNotimpPacket(mdp, packet);
   }
 
index d9c8c8c35b980b6e623dc9b4c71c3e551fe8f8f1..e3f6e7a8483580f28ceda313cde33aad64154c86 100644 (file)
@@ -33,7 +33,8 @@ webserver-address: %s
                          "ixfrdist_unknown_domain_inqueries_total",
                          "ixfrdist_sys_msec", "ixfrdist_user_msec",
                          "ixfrdist_real_memory_usage",
-                         "ixfrdist_fd_usage"]
+                         "ixfrdist_fd_usage",
+                         "ixfrdist_notimp"]
     metric_domain_stats = ["ixfrdist_soa_serial", "ixfrdist_soa_checks_total",
                            "ixfrdist_soa_checks_failed_total",
                            "ixfrdist_soa_inqueries_total",