From 199b46a96dde589f0f7c30dff6d56f68a1ee3f4b Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Thu, 18 Jul 2024 10:37:20 +0200 Subject: [PATCH] dnsdist: Add `pdns::stat_double_t` --- pdns/dnsdistdist/dnsdist-carbon.cc | 2 +- pdns/dnsdistdist/dnsdist-lua-inspection.cc | 2 +- pdns/dnsdistdist/dnsdist-metrics.cc | 2 +- pdns/dnsdistdist/dnsdist-metrics.hh | 14 +++++++------- pdns/dnsdistdist/dnsdist-snmp.cc | 4 ++-- pdns/dnsdistdist/dnsdist-web.cc | 6 +++--- pdns/dnsdistdist/dnsdist.cc | 2 +- pdns/dnsdistdist/dnsdist.hh | 12 ++++++------ pdns/stat_t.hh | 14 +++++++------- 9 files changed, 29 insertions(+), 29 deletions(-) diff --git a/pdns/dnsdistdist/dnsdist-carbon.cc b/pdns/dnsdistdist/dnsdist-carbon.cc index e37bece4e463..a3b3cfa25637 100644 --- a/pdns/dnsdistdist/dnsdist-carbon.cc +++ b/pdns/dnsdistdist/dnsdist-carbon.cc @@ -61,7 +61,7 @@ static bool doOneCarbonExport(const Carbon::Endpoint& endpoint) if (const auto& val = std::get_if(&entry.d_value)) { str << (*val)->load(); } - else if (const auto& adval = std::get_if*>(&entry.d_value)) { + else if (const auto& adval = std::get_if(&entry.d_value)) { str << (*adval)->load(); } else if (const auto& func = std::get_if(&entry.d_value)) { diff --git a/pdns/dnsdistdist/dnsdist-lua-inspection.cc b/pdns/dnsdistdist/dnsdist-lua-inspection.cc index 015d26f3ab1d..f3cef29f1e4d 100644 --- a/pdns/dnsdistdist/dnsdist-lua-inspection.cc +++ b/pdns/dnsdistdist/dnsdist-lua-inspection.cc @@ -814,7 +814,7 @@ void setupLuaInspection(LuaContext& luaCtx) if (const auto& val = std::get_if(&entry.d_value)) { second = std::to_string((*val)->load()); } - else if (const auto& adval = std::get_if*>(&entry.d_value)) { + else if (const auto& adval = std::get_if(&entry.d_value)) { second = (flt % (*adval)->load()).str(); } else if (const auto& func = std::get_if(&entry.d_value)) { diff --git a/pdns/dnsdistdist/dnsdist-metrics.cc b/pdns/dnsdistdist/dnsdist-metrics.cc index 483d7b2939d6..89f13bef65db 100644 --- a/pdns/dnsdistdist/dnsdist-metrics.cc +++ b/pdns/dnsdistdist/dnsdist-metrics.cc @@ -64,7 +64,7 @@ struct MutableGauge } ~MutableGauge() = default; - mutable pdns::stat_t_trait d_value{0}; + mutable pdns::stat_double_t d_value{0}; }; static SharedLockGuarded>> s_customCounters; diff --git a/pdns/dnsdistdist/dnsdist-metrics.hh b/pdns/dnsdistdist/dnsdist-metrics.hh index 35cbf1a1ebe5..47a3fb84078b 100644 --- a/pdns/dnsdistdist/dnsdist-metrics.hh +++ b/pdns/dnsdistdist/dnsdist-metrics.hh @@ -81,14 +81,14 @@ struct Stats stat_t tcpQueryPipeFull{0}; stat_t tcpCrossProtocolQueryPipeFull{0}; stat_t tcpCrossProtocolResponsePipeFull{0}; - pdns::stat_t_trait latencyAvg100{0}, latencyAvg1000{0}, latencyAvg10000{0}, latencyAvg1000000{0}; - pdns::stat_t_trait latencyTCPAvg100{0}, latencyTCPAvg1000{0}, latencyTCPAvg10000{0}, latencyTCPAvg1000000{0}; - pdns::stat_t_trait latencyDoTAvg100{0}, latencyDoTAvg1000{0}, latencyDoTAvg10000{0}, latencyDoTAvg1000000{0}; - pdns::stat_t_trait latencyDoHAvg100{0}, latencyDoHAvg1000{0}, latencyDoHAvg10000{0}, latencyDoHAvg1000000{0}; - pdns::stat_t_trait latencyDoQAvg100{0}, latencyDoQAvg1000{0}, latencyDoQAvg10000{0}, latencyDoQAvg1000000{0}; - pdns::stat_t_trait 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; - using entry_t = std::variant*, statfunction_t>; + using entry_t = std::variant; struct EntryPair { std::string d_name; diff --git a/pdns/dnsdistdist/dnsdist-snmp.cc b/pdns/dnsdistdist/dnsdist-snmp.cc index 68359cd1b5a5..cbd8c619d999 100644 --- a/pdns/dnsdistdist/dnsdist-snmp.cc +++ b/pdns/dnsdistdist/dnsdist-snmp.cc @@ -140,7 +140,7 @@ static int handleFloatStats(netsnmp_mib_handler* handler, return SNMP_ERR_GENERR; } - if (const auto& val = std::get_if*>(&stIt->second)) { + if (const auto& val = std::get_if(&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* 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); diff --git a/pdns/dnsdistdist/dnsdist-web.cc b/pdns/dnsdistdist/dnsdist-web.cc index 65e3ad921808..21f325a1c197 100644 --- a/pdns/dnsdistdist/dnsdist-web.cc +++ b/pdns/dnsdistdist/dnsdist-web.cc @@ -512,7 +512,7 @@ static void handlePrometheus(const YaHTTP::Request& req, YaHTTP::Response& resp) if (const auto& val = std::get_if(&entry.d_value)) { output << (*val)->load(); } - else if (const auto& adval = std::get_if*>(&entry.d_value)) { + else if (const auto& adval = std::get_if(&entry.d_value)) { output << (*adval)->load(); } else if (const auto& func = std::get_if(&entry.d_value)) { @@ -929,7 +929,7 @@ static void addStatsToJSONObject(Json::object& obj) if (const auto& val = std::get_if(&entry.d_value)) { obj.emplace(entry.d_name, (double)(*val)->load()); } - else if (const auto& adval = std::get_if*>(&entry.d_value)) { + else if (const auto& adval = std::get_if(&entry.d_value)) { obj.emplace(entry.d_name, (*adval)->load()); } else if (const auto& func = std::get_if(&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*>(&item.d_value)) { + else if (const auto& adval = std::get_if(&item.d_value)) { doc.emplace_back(Json::object{ {"type", "StatisticItem"}, {"name", item.d_name}, diff --git a/pdns/dnsdistdist/dnsdist.cc b/pdns/dnsdistdist/dnsdist.cc index 49b5de0df8ef..39b2ba098e93 100644 --- a/pdns/dnsdistdist/dnsdist.cc +++ b/pdns/dnsdistdist/dnsdist.cc @@ -187,7 +187,7 @@ static std::unique_ptr> g_delay{nullptr}; static void doLatencyStats(dnsdist::Protocol protocol, double udiff) { - constexpr auto doAvg = [](pdns::stat_t_trait& 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); }; diff --git a/pdns/dnsdistdist/dnsdist.hh b/pdns/dnsdistdist/dnsdist.hh index 5754af6a70a9..e7db4398fda8 100644 --- a/pdns/dnsdistdist/dnsdist.hh +++ b/pdns/dnsdistdist/dnsdist.hh @@ -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 tcpAvgQueriesPerConnection{0.0}; + pdns::stat_double_t tcpAvgQueriesPerConnection{0.0}; /* in ms */ - pdns::stat_t_trait tcpAvgConnectionDuration{0.0}; + pdns::stat_double_t tcpAvgConnectionDuration{0.0}; std::set cpus; std::string interface; ComboAddress local; @@ -655,11 +655,11 @@ struct DownstreamState : public std::enable_shared_from_this stat_t tcpReusedConnections{0}; stat_t tcpNewConnections{0}; stat_t tlsResumptions{0}; - pdns::stat_t_trait tcpAvgQueriesPerConnection{0.0}; + pdns::stat_double_t tcpAvgQueriesPerConnection{0.0}; /* in ms */ - pdns::stat_t_trait tcpAvgConnectionDuration{0.0}; - pdns::stat_t_trait queryLoad{0.0}; - pdns::stat_t_trait 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> hashes; LockGuarded> mplexer{nullptr}; diff --git a/pdns/stat_t.hh b/pdns/stat_t.hh index 96c7433514de..4fa00d2a29a1 100644 --- a/pdns/stat_t.hh +++ b/pdns/stat_t.hh @@ -87,17 +87,17 @@ namespace pdns { } typename std::aligned_storage_t counter; }; - - using stat_t = stat_t_trait; - using stat32_t = stat_t_trait; - using stat16_t = stat_t_trait; } #else namespace pdns { - using stat_t = std::atomic; - using stat32_t = std::atomic; - using stat16_t = std::atomic; template using stat_t_trait = std::atomic; } #endif + +namespace pdns { + using stat_t = stat_t_trait; + using stat32_t = stat_t_trait; + using stat16_t = stat_t_trait; + using stat_double_t = stat_t_trait; +}