From ed2a37447ab51060a063362f53f730f909aee08f Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Tue, 1 Dec 2020 15:08:52 +0100 Subject: [PATCH] dnsdist: Clarify what DynBlockMaintenance::s_topsMutex protects --- pdns/dnsdist-dynblocks.hh | 2 ++ pdns/dnsdistdist/dnsdist-dynblocks.cc | 9 +++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/pdns/dnsdist-dynblocks.hh b/pdns/dnsdist-dynblocks.hh index 87027a47ce..8f031f457a 100644 --- a/pdns/dnsdist-dynblocks.hh +++ b/pdns/dnsdist-dynblocks.hh @@ -394,6 +394,8 @@ private: std::map>> smtData; }; + /* Protects s_topNMGsByReason and s_topSMTsByReason. s_metricsData should only be accessed + by the dynamic blocks maintenance thread so it does not need a lock. */ static std::mutex s_topsMutex; // need N+1 datapoints to be able to do the diff after a collection point has been reached static std::list s_metricsData; diff --git a/pdns/dnsdistdist/dnsdist-dynblocks.cc b/pdns/dnsdistdist/dnsdist-dynblocks.cc index 900a25cfaf..574cd4c4c2 100644 --- a/pdns/dnsdistdist/dnsdist-dynblocks.cc +++ b/pdns/dnsdistdist/dnsdist-dynblocks.cc @@ -475,13 +475,10 @@ void DynBlockMaintenance::collectMetrics() snapshot.smtData = getTopSuffixes(s_topN * 5); snapshot.nmgData = getTopNetmasks(s_topN * 5); - { - std::lock_guard lock(s_topsMutex); - if (s_metricsData.size() >= 7) { - s_metricsData.pop_front(); - } - s_metricsData.push_back(std::move(snapshot)); + if (s_metricsData.size() >= 7) { + s_metricsData.pop_front(); } + s_metricsData.push_back(std::move(snapshot)); } void DynBlockMaintenance::generateMetrics() -- 2.47.2