auto mplexer = std::unique_ptr<FDMultiplexer>(FDMultiplexer::getMultiplexerSilent());
auto states = g_dstates.getLocal(); // this points to the actual shared_ptrs!
for(auto& dss : *states) {
- if (++dss->lastCheck < dss->d_config.checkInterval) {
+ if (dss->d_nextCheck > 0) {
+ --dss->d_nextCheck;
continue;
}
- dss->lastCheck = 0;
+ dss->d_nextCheck = dss->d_config.checkInterval;
if (dss->d_config.availability == DownstreamState::Availability::Auto) {
if (!queueHealthCheck(mplexer, dss)) {
auto mplexer = std::unique_ptr<FDMultiplexer>(FDMultiplexer::getMultiplexerSilent());
for (auto& dss : g_dstates.getCopy()) { // it is a copy, but the internal shared_ptrs are the real deal
if (dss->d_config.availability == DownstreamState::Availability::Auto) {
+ dss->d_nextCheck = dss->d_config.checkInterval;
if (!queueHealthCheck(mplexer, dss, true)) {
dss->setUpStatus(false);
warnlog("Marking downstream %s as 'down'", dss->getNameWithAddr());
size_t socketsOffset{0};
double latencyUsec{0.0};
double latencyUsecTCP{0.0};
- unsigned int lastCheck{0};
+ unsigned int d_nextCheck{0};
uint8_t currentCheckFailures{0};
uint8_t consecutiveSuccessfulChecks{0};
std::atomic<bool> hashesComputed{false};