Skip to content

Commit

Permalink
dnsdist: Add pdns::stat_double_t
Browse files Browse the repository at this point in the history
  • Loading branch information
rgacogne committed Jul 18, 2024
1 parent 3fd6acb commit 199b46a
Show file tree
Hide file tree
Showing 9 changed files with 29 additions and 29 deletions.
2 changes: 1 addition & 1 deletion pdns/dnsdistdist/dnsdist-carbon.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down
2 changes: 1 addition & 1 deletion pdns/dnsdistdist/dnsdist-lua-inspection.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down
2 changes: 1 addition & 1 deletion pdns/dnsdistdist/dnsdist-metrics.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
14 changes: 7 additions & 7 deletions pdns/dnsdistdist/dnsdist-metrics.hh
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions pdns/dnsdistdist/dnsdist-snmp.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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);
Expand Down
6 changes: 3 additions & 3 deletions pdns/dnsdistdist/dnsdist-web.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down Expand Up @@ -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)) {
Expand Down Expand Up @@ -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},
Expand Down
2 changes: 1 addition & 1 deletion pdns/dnsdistdist/dnsdist.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
};

Expand Down
12 changes: 6 additions & 6 deletions pdns/dnsdistdist/dnsdist.hh
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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};
Expand Down
14 changes: 7 additions & 7 deletions pdns/stat_t.hh
Original file line number Diff line number Diff line change
Expand Up @@ -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>;
}

0 comments on commit 199b46a

Please sign in to comment.