From 18b5c40b25e85ff137b0a79ab0df0171489d89ea Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Mon, 28 Feb 2022 13:21:53 +0100 Subject: [PATCH] dnsdist: The check interval applies to health-check, not timeouts --- pdns/dnsdist.cc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pdns/dnsdist.cc b/pdns/dnsdist.cc index 58f695e118..ffe03ff6c6 100644 --- a/pdns/dnsdist.cc +++ b/pdns/dnsdist.cc @@ -1829,7 +1829,15 @@ static void healthChecksThread() auto mplexer = std::unique_ptr(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); -- 2.47.2