mirror of https://github.com/Icinga/icinga2.git
parent
05d0dc5683
commit
5492d6fac3
|
@ -105,7 +105,11 @@ void CheckerComponent::CheckTimerHandler(void)
|
|||
m_IdleServices.erase(service);
|
||||
m_PendingServices.insert(service);
|
||||
|
||||
try {
|
||||
service->BeginExecuteCheck(boost::bind(&CheckerComponent::CheckCompletedHandler, this, service));
|
||||
} catch (const exception& ex) {
|
||||
Logger::Write(LogCritical, "checker", "Exception occured while checking service '" + service->GetName() + "': " + ex.what());
|
||||
}
|
||||
|
||||
tasks++;
|
||||
}
|
||||
|
|
|
@ -682,13 +682,22 @@ void Service::BeginExecuteCheck(const function<void (void)>& callback)
|
|||
scheduleInfo->Set("schedule_start", GetNextCheck());
|
||||
scheduleInfo->Set("execution_start", Utility::GetTime());
|
||||
|
||||
try {
|
||||
vector<Value> arguments;
|
||||
arguments.push_back(static_cast<Service::Ptr>(GetSelf()));
|
||||
ScriptTask::Ptr task;
|
||||
task = InvokeMethod("check", arguments, boost::bind(&Service::CheckCompletedHandler, this, scheduleInfo, _1, callback));
|
||||
assert(task); /* TODO: gracefully handle missing methods */
|
||||
|
||||
Set("current_task", task);
|
||||
} catch (...) {
|
||||
/* something went wrong while setting up the method call -
|
||||
* reschedule the service and call the callback anyway. */
|
||||
|
||||
UpdateNextCheck();
|
||||
|
||||
callback();
|
||||
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
void Service::CheckCompletedHandler(const Dictionary::Ptr& scheduleInfo,
|
||||
|
|
Loading…
Reference in New Issue