From: Remi Gacogne Date: Fri, 22 Apr 2022 11:29:28 +0000 (+0200) Subject: dnsdist: The check interval applies to health-check, not timeouts X-Git-Tag: dnsdist-1.7.1^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F11572%2Fhead;p=thirdparty%2Fpdns.git dnsdist: The check interval applies to health-check, not timeouts --- diff --git a/pdns/dnsdist.cc b/pdns/dnsdist.cc index 19941564f7..ea09c45487 100644 --- a/pdns/dnsdist.cc +++ b/pdns/dnsdist.cc @@ -1850,17 +1850,6 @@ 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) { - if (++dss->lastCheck < dss->checkInterval) { - continue; - } - - dss->lastCheck = 0; - - if (dss->availability == DownstreamState::Availability::Auto) { - if (!queueHealthCheck(mplexer, dss)) { - updateHealthCheckResult(dss, false, false); - } - } auto delta = dss->sw.udiffAndSet()/1000000.0; dss->queryLoad.store(1.0*(dss->queries.load() - dss->prev.queries.load())/delta); @@ -1903,6 +1892,19 @@ static void healthChecksThread() g_rings.insertResponse(ts, ids.origRemote, ids.qname, ids.qtype, std::numeric_limits::max(), 0, fake, dss->remote, dss->getProtocol()); } } + + if (++dss->lastCheck < dss->checkInterval) { + continue; + } + + dss->lastCheck = 0; + + if (dss->availability == DownstreamState::Availability::Auto) { + if (!queueHealthCheck(mplexer, dss)) { + updateHealthCheckResult(dss, false, false); + } + } + } handleQueuedHealthChecks(*mplexer);