Update service state when delegation is unsuccessful

Fixes #3548
This commit is contained in:
Gunnar Beutner 2013-01-24 10:40:31 +01:00
parent 19d654b7c2
commit db6c89bc58

View File

@ -163,7 +163,28 @@ void DelegationComponent::DelegationTimerHandler(void)
break;
}
assert(candidates.size() == 0 || !service->GetChecker().IsEmpty());
if (candidates.size() == 0) {
if (service->GetState() != StateUncheckable && service->GetEnableChecks()) {
Dictionary::Ptr cr = boost::make_shared<Dictionary>();
double now = Utility::GetTime();
cr->Set("schedule_start", now);
cr->Set("schedule_end", now);
cr->Set("execution_start", now);
cr->Set("execution_end", now);
cr->Set("state", StateUncheckable);
cr->Set("output", "No checker is available for this service.");
service->ProcessCheckResult(cr);
Logger::Write(LogWarning, "delegation", "Can't delegate service: " + service->GetName());
}
continue;
}
assert(!service->GetChecker().IsEmpty());
}
Endpoint::Ptr endpoint;