]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: The check interval applies to health-check, not timeouts 11375/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 28 Feb 2022 12:21:53 +0000 (13:21 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 28 Feb 2022 12:21:53 +0000 (13:21 +0100)
pdns/dnsdist.cc

index 58f695e118fd319a7d480fc45a0a5c1d0653b81e..ffe03ff6c6bea455ab47b4b5516229443a5928ea 100644 (file)
@@ -1829,7 +1829,15 @@ static void healthChecksThread()
 
     auto mplexer = std::unique_ptr<FDMultiplexer>(FDMultiplexer::getMultiplexerSilent());
     auto states = g_dstates.getLocal(); // this points to the actual shared_ptrs!
-    for(auto& dss : *states) {
+    for (auto& dss : *states) {
+      auto delta = dss->sw.udiffAndSet()/1000000.0;
+      dss->queryLoad.store(1.0*(dss->queries.load() - dss->prev.queries.load())/delta);
+      dss->dropRate.store(1.0*(dss->reuseds.load() - dss->prev.reuseds.load())/delta);
+      dss->prev.queries.store(dss->queries.load());
+      dss->prev.reuseds.store(dss->reuseds.load());
+
+      dss->handleTimeouts();
+
       if (dss->d_nextCheck > 1) {
         --dss->d_nextCheck;
         continue;
@@ -1842,14 +1850,6 @@ static void healthChecksThread()
           updateHealthCheckResult(dss, false, false);
         }
       }
-
-      auto delta = dss->sw.udiffAndSet()/1000000.0;
-      dss->queryLoad.store(1.0*(dss->queries.load() - dss->prev.queries.load())/delta);
-      dss->dropRate.store(1.0*(dss->reuseds.load() - dss->prev.reuseds.load())/delta);
-      dss->prev.queries.store(dss->queries.load());
-      dss->prev.reuseds.store(dss->reuseds.load());
-
-      dss->handleTimeouts();
     }
 
     handleQueuedHealthChecks(*mplexer);