From: Gunnar Beutner Date: Thu, 28 Nov 2013 19:56:21 +0000 (+0100) Subject: Fix initial check schedule. X-Git-Tag: v0.0.5~10 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cac4167e79b5435125c0b80bd6f21c0d4fb8a294;p=icinga2 Fix initial check schedule. Fixes #5240 --- diff --git a/components/checker/checkercomponent.cpp b/components/checker/checkercomponent.cpp index fd050c6f7..ef4127945 100644 --- a/components/checker/checkercomponent.cpp +++ b/components/checker/checkercomponent.cpp @@ -31,15 +31,18 @@ using namespace icinga; REGISTER_TYPE(CheckerComponent); -void CheckerComponent::Start(void) +void CheckerComponent::OnConfigLoaded(void) { - DynamicObject::Start(); - DynamicObject::OnStarted.connect(bind(&CheckerComponent::ObjectHandler, this, _1)); DynamicObject::OnStopped.connect(bind(&CheckerComponent::ObjectHandler, this, _1)); DynamicObject::OnAuthorityChanged.connect(bind(&CheckerComponent::ObjectHandler, this, _1)); Service::OnNextCheckChanged.connect(bind(&CheckerComponent::NextCheckChangedHandler, this, _1)); +} + +void CheckerComponent::Start(void) +{ + DynamicObject::Start(); m_Stopped = false; @@ -49,10 +52,6 @@ void CheckerComponent::Start(void) m_ResultTimer->SetInterval(5); m_ResultTimer->OnTimerExpired.connect(boost::bind(&CheckerComponent::ResultTimerHandler, this)); m_ResultTimer->Start(); - - BOOST_FOREACH(const Service::Ptr& service, DynamicType::GetObjects()) { - ObjectHandler(service); - } } void CheckerComponent::Stop(void) diff --git a/components/checker/checkercomponent.h b/components/checker/checkercomponent.h index 5d5402f1d..8251874e4 100644 --- a/components/checker/checkercomponent.h +++ b/components/checker/checkercomponent.h @@ -67,6 +67,7 @@ public: > > ServiceSet; + virtual void OnConfigLoaded(void); virtual void Start(void); virtual void Stop(void); diff --git a/lib/base/dynamicobject.cpp b/lib/base/dynamicobject.cpp index 2bd119eb5..4982f9248 100644 --- a/lib/base/dynamicobject.cpp +++ b/lib/base/dynamicobject.cpp @@ -45,11 +45,6 @@ boost::signals2::signal DynamicObject::OnState boost::signals2::signal DynamicObject::OnAuthorityChanged; DynamicObject::DynamicObject(void) -{ - SetActive(false); -} - -DynamicObject::~DynamicObject(void) { } DynamicType::Ptr DynamicObject::GetType(void) const diff --git a/lib/base/dynamicobject.h b/lib/base/dynamicobject.h index df3baf724..1383f66f3 100644 --- a/lib/base/dynamicobject.h +++ b/lib/base/dynamicobject.h @@ -52,8 +52,6 @@ class I2_BASE_API DynamicObject : public ObjectImpl public: DECLARE_PTR_TYPEDEFS(DynamicObject); - ~DynamicObject(void); - static boost::signals2::signal OnStarted; static boost::signals2::signal OnStopped; static boost::signals2::signal OnStateChanged; diff --git a/lib/icinga/service.cpp b/lib/icinga/service.cpp index 4c909118b..fcca38ed3 100644 --- a/lib/icinga/service.cpp +++ b/lib/icinga/service.cpp @@ -44,14 +44,19 @@ Service::Service(void) void Service::Start(void) { - DynamicObject::Start(); - VERIFY(GetHost()); AddDowntimesToCache(); AddCommentsToCache(); StartDowntimesExpiredTimer(); + + double now = Utility::GetTime(); + + if (GetNextCheck() < now + 300) + SetNextCheck(now + Utility::Random() % 300); + + DynamicObject::Start(); } void Service::OnConfigLoaded(void) @@ -77,9 +82,6 @@ void Service::OnConfigLoaded(void) UpdateSlaveNotifications(); SetSchedulingOffset(Utility::Random()); - - if (GetNextCheck() < Utility::GetTime() + 300) - SetNextCheck(Utility::GetTime() + Utility::Random() % 300); } Service::Ptr Service::GetByNamePair(const String& hostName, const String& serviceName)