]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Add `pdns::stat_double_t` 14495/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 18 Jul 2024 08:37:20 +0000 (10:37 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 18 Jul 2024 08:37:20 +0000 (10:37 +0200)
pdns/dnsdistdist/dnsdist-carbon.cc
pdns/dnsdistdist/dnsdist-lua-inspection.cc
pdns/dnsdistdist/dnsdist-metrics.cc
pdns/dnsdistdist/dnsdist-metrics.hh
pdns/dnsdistdist/dnsdist-snmp.cc
pdns/dnsdistdist/dnsdist-web.cc
pdns/dnsdistdist/dnsdist.cc
pdns/dnsdistdist/dnsdist.hh
pdns/stat_t.hh

index e37bece4e4632888caa40b73a546c95e3f63ffdc..a3b3cfa2563765346c6c57f372f6d45a11005366 100644 (file)
@@ -61,7 +61,7 @@ static bool doOneCarbonExport(const Carbon::Endpoint& endpoint)
         if (const auto& val = std::get_if<pdns::stat_t*>(&entry.d_value)) {
           str << (*val)->load();
         }
-        else if (const auto& adval = std::get_if<pdns::stat_t_trait<double>*>(&entry.d_value)) {
+        else if (const auto& adval = std::get_if<pdns::stat_double_t*>(&entry.d_value)) {
           str << (*adval)->load();
         }
         else if (const auto& func = std::get_if<dnsdist::metrics::Stats::statfunction_t>(&entry.d_value)) {
index 015d26f3ab1d6f0d4f436291b107342e16665e15..f3cef29f1e4daa4d68549e5665f0aa69fa004ba2 100644 (file)
@@ -814,7 +814,7 @@ void setupLuaInspection(LuaContext& luaCtx)
       if (const auto& val = std::get_if<pdns::stat_t*>(&entry.d_value)) {
         second = std::to_string((*val)->load());
       }
-      else if (const auto& adval = std::get_if<pdns::stat_t_trait<double>*>(&entry.d_value)) {
+      else if (const auto& adval = std::get_if<pdns::stat_double_t*>(&entry.d_value)) {
         second = (flt % (*adval)->load()).str();
       }
       else if (const auto& func = std::get_if<dnsdist::metrics::Stats::statfunction_t>(&entry.d_value)) {
index 483d7b2939d6a666ac8652be635fd2000175610e..89f13bef65dba4563a3ac5954ba9c51379d75806 100644 (file)
@@ -64,7 +64,7 @@ struct MutableGauge
   }
   ~MutableGauge() = default;
 
-  mutable pdns::stat_t_trait<double> d_value{0};
+  mutable pdns::stat_double_t d_value{0};
 };
 
 static SharedLockGuarded<std::map<std::string, MutableCounter, std::less<>>> s_customCounters;
index 35cbf1a1ebe5700a340457423224c5c2bff1ce84..47a3fb84078bb1798606d4ca4667c471e1c51224 100644 (file)
@@ -81,14 +81,14 @@ struct Stats
   stat_t tcpQueryPipeFull{0};
   stat_t tcpCrossProtocolQueryPipeFull{0};
   stat_t tcpCrossProtocolResponsePipeFull{0};
-  pdns::stat_t_trait<double> latencyAvg100{0}, latencyAvg1000{0}, latencyAvg10000{0}, latencyAvg1000000{0};
-  pdns::stat_t_trait<double> latencyTCPAvg100{0}, latencyTCPAvg1000{0}, latencyTCPAvg10000{0}, latencyTCPAvg1000000{0};
-  pdns::stat_t_trait<double> latencyDoTAvg100{0}, latencyDoTAvg1000{0}, latencyDoTAvg10000{0}, latencyDoTAvg1000000{0};
-  pdns::stat_t_trait<double> latencyDoHAvg100{0}, latencyDoHAvg1000{0}, latencyDoHAvg10000{0}, latencyDoHAvg1000000{0};
-  pdns::stat_t_trait<double> latencyDoQAvg100{0}, latencyDoQAvg1000{0}, latencyDoQAvg10000{0}, latencyDoQAvg1000000{0};
-  pdns::stat_t_trait<double> latencyDoH3Avg100{0}, latencyDoH3Avg1000{0}, latencyDoH3Avg10000{0}, latencyDoH3Avg1000000{0};
+  pdns::stat_double_t latencyAvg100{0}, latencyAvg1000{0}, latencyAvg10000{0}, latencyAvg1000000{0};
+  pdns::stat_double_t latencyTCPAvg100{0}, latencyTCPAvg1000{0}, latencyTCPAvg10000{0}, latencyTCPAvg1000000{0};
+  pdns::stat_double_t latencyDoTAvg100{0}, latencyDoTAvg1000{0}, latencyDoTAvg10000{0}, latencyDoTAvg1000000{0};
+  pdns::stat_double_t latencyDoHAvg100{0}, latencyDoHAvg1000{0}, latencyDoHAvg10000{0}, latencyDoHAvg1000000{0};
+  pdns::stat_double_t latencyDoQAvg100{0}, latencyDoQAvg1000{0}, latencyDoQAvg10000{0}, latencyDoQAvg1000000{0};
+  pdns::stat_double_t latencyDoH3Avg100{0}, latencyDoH3Avg1000{0}, latencyDoH3Avg10000{0}, latencyDoH3Avg1000000{0};
   using statfunction_t = std::function<uint64_t(const std::string&)>;
-  using entry_t = std::variant<stat_t*, pdns::stat_t_trait<double>*, statfunction_t>;
+  using entry_t = std::variant<stat_t*, pdns::stat_double_t*, statfunction_t>;
   struct EntryPair
   {
     std::string d_name;
index 68359cd1b5a5a7e50d703d7388236d21ca5c3149..cbd8c619d999659a4dfd6edf03f6199fe4070f0c 100644 (file)
@@ -140,7 +140,7 @@ static int handleFloatStats(netsnmp_mib_handler* handler,
     return SNMP_ERR_GENERR;
   }
 
-  if (const auto& val = std::get_if<pdns::stat_t_trait<double>*>(&stIt->second)) {
+  if (const auto& val = std::get_if<pdns::stat_double_t*>(&stIt->second)) {
     std::string str(std::to_string((*val)->load()));
     snmp_set_var_typed_value(requests->requestvb,
                              ASN_OCTET_STR,
@@ -152,7 +152,7 @@ static int handleFloatStats(netsnmp_mib_handler* handler,
   return SNMP_ERR_GENERR;
 }
 
-static void registerFloatStat(const char* name, const OIDStat& statOID, pdns::stat_t_trait<double>* ptr)
+static void registerFloatStat(const char* name, const OIDStat& statOID, pdns::stat_double_t* ptr)
 {
   if (statOID.size() != OID_LENGTH(queriesOID)) {
     errlog("Invalid OID for SNMP Float statistic %s", name);
index 65e3ad92180855f694d610acdfbb6e8dd1ba96b9..21f325a1c197b5928ad96525e9e7decc35ad6a3e 100644 (file)
@@ -512,7 +512,7 @@ static void handlePrometheus(const YaHTTP::Request& req, YaHTTP::Response& resp)
       if (const auto& val = std::get_if<pdns::stat_t*>(&entry.d_value)) {
         output << (*val)->load();
       }
-      else if (const auto& adval = std::get_if<pdns::stat_t_trait<double>*>(&entry.d_value)) {
+      else if (const auto& adval = std::get_if<pdns::stat_double_t*>(&entry.d_value)) {
         output << (*adval)->load();
       }
       else if (const auto& func = std::get_if<dnsdist::metrics::Stats::statfunction_t>(&entry.d_value)) {
@@ -929,7 +929,7 @@ static void addStatsToJSONObject(Json::object& obj)
     if (const auto& val = std::get_if<pdns::stat_t*>(&entry.d_value)) {
       obj.emplace(entry.d_name, (double)(*val)->load());
     }
-    else if (const auto& adval = std::get_if<pdns::stat_t_trait<double>*>(&entry.d_value)) {
+    else if (const auto& adval = std::get_if<pdns::stat_double_t*>(&entry.d_value)) {
       obj.emplace(entry.d_name, (*adval)->load());
     }
     else if (const auto& func = std::get_if<dnsdist::metrics::Stats::statfunction_t>(&entry.d_value)) {
@@ -1395,7 +1395,7 @@ static void handleStatsOnly(const YaHTTP::Request& req, YaHTTP::Response& resp)
           {"name", item.d_name},
           {"value", (double)(*val)->load()}});
       }
-      else if (const auto& adval = std::get_if<pdns::stat_t_trait<double>*>(&item.d_value)) {
+      else if (const auto& adval = std::get_if<pdns::stat_double_t*>(&item.d_value)) {
         doc.emplace_back(Json::object{
           {"type", "StatisticItem"},
           {"name", item.d_name},
index 49b5de0df8efa4eeba75bac87d9fef8290a1d29d..39b2ba098e938ba0b38e6c58bb513adf3d48dd0f 100644 (file)
@@ -187,7 +187,7 @@ static std::unique_ptr<DelayPipe<DelayedPacket>> g_delay{nullptr};
 
 static void doLatencyStats(dnsdist::Protocol protocol, double udiff)
 {
-  constexpr auto doAvg = [](pdns::stat_t_trait<double>& var, double n, double weight) {
+  constexpr auto doAvg = [](pdns::stat_double_t& var, double n, double weight) {
     var.store((weight - 1) * var.load() / weight + n / weight);
   };
 
index 5754af6a70a9f83e50f40c0d01c13af434ead776..e7db4398fda818f6e5d8461d6e13083ef989445f 100644 (file)
@@ -345,9 +345,9 @@ struct ClientState
   stat_t tls12queries{0}; // valid DNS queries received via TLSv1.2
   stat_t tls13queries{0}; // valid DNS queries received via TLSv1.3
   stat_t tlsUnknownqueries{0}; // valid DNS queries received via unknown TLS version
-  pdns::stat_t_trait<double> tcpAvgQueriesPerConnection{0.0};
+  pdns::stat_double_t tcpAvgQueriesPerConnection{0.0};
   /* in ms */
-  pdns::stat_t_trait<double> tcpAvgConnectionDuration{0.0};
+  pdns::stat_double_t tcpAvgConnectionDuration{0.0};
   std::set<int> cpus;
   std::string interface;
   ComboAddress local;
@@ -655,11 +655,11 @@ struct DownstreamState : public std::enable_shared_from_this<DownstreamState>
   stat_t tcpReusedConnections{0};
   stat_t tcpNewConnections{0};
   stat_t tlsResumptions{0};
-  pdns::stat_t_trait<double> tcpAvgQueriesPerConnection{0.0};
+  pdns::stat_double_t tcpAvgQueriesPerConnection{0.0};
   /* in ms */
-  pdns::stat_t_trait<double> tcpAvgConnectionDuration{0.0};
-  pdns::stat_t_trait<double> queryLoad{0.0};
-  pdns::stat_t_trait<double> dropRate{0.0};
+  pdns::stat_double_t tcpAvgConnectionDuration{0.0};
+  pdns::stat_double_t queryLoad{0.0};
+  pdns::stat_double_t dropRate{0.0};
 
   SharedLockGuarded<std::vector<unsigned int>> hashes;
   LockGuarded<std::unique_ptr<FDMultiplexer>> mplexer{nullptr};
index 96c7433514de3bca2e5748c9e954379ece5c0c76..4fa00d2a29a1eee2d400c20c7382acbba44704c0 100644 (file)
@@ -87,17 +87,17 @@ namespace pdns {
     }
     typename std::aligned_storage_t<sizeof(atomic_t), CPU_LEVEL1_DCACHE_LINESIZE> counter;
   };
-
-  using stat_t = stat_t_trait<uint64_t>;
-  using stat32_t = stat_t_trait<uint32_t>;
-  using stat16_t = stat_t_trait<uint16_t>;
 }
 #else
 namespace pdns {
-  using stat_t = std::atomic<uint64_t>;
-  using stat32_t = std::atomic<uint32_t>;
-  using stat16_t = std::atomic<uint16_t>;
   template <class T>
   using stat_t_trait = std::atomic<T>;
 }
 #endif
+
+namespace pdns {
+  using stat_t = stat_t_trait<uint64_t>;
+  using stat32_t = stat_t_trait<uint32_t>;
+  using stat16_t = stat_t_trait<uint16_t>;
+  using stat_double_t = stat_t_trait<double>;
+}