From: Remi Gacogne Date: Tue, 1 Dec 2020 14:08:52 +0000 (+0100) Subject: dnsdist: Clarify what DynBlockMaintenance::s_topsMutex protects X-Git-Tag: rec-4.5.0-alpha1~92^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F9756%2Fhead;p=thirdparty%2Fpdns.git dnsdist: Clarify what DynBlockMaintenance::s_topsMutex protects --- 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()