double wait = checkable->GetNextCheck() - Utility::GetTime();
- if (wait > 0 || Checkable::GetPendingChecks() >= GetConcurrentChecks()) {
+ if (Checkable::GetPendingChecks() >= GetConcurrentChecks())
+ wait = 0.5;
+
+ if (wait > 0) {
/* Wait for the next check. */
m_CV.timed_wait(lock, boost::posix_time::milliseconds(wait * 1000));
resolvers.push_back(std::make_pair("command", commandObj));
resolvers.push_back(std::make_pair("icinga", IcingaApplication::GetInstance()));
- Checkable::IncreasePendingChecks();
-
PluginUtility::ExecuteCommand(commandObj, checkable, checkable->GetLastCheckResult(),
resolvers, resolvedMacros, useResolvedMacros,
boost::bind(&PluginCheckTask::ProcessFinishedHandler, checkable, cr, _1, _2));
+
+ if (!resolvedMacros || useResolvedMacros)
+ Checkable::IncreasePendingChecks();
}
void PluginCheckTask::ProcessFinishedHandler(const Checkable::Ptr& checkable, const CheckResult::Ptr& cr, const Value& commandLine, const ProcessResult& pr)