]> granicus.if.org Git - icinga2/commitdiff
Fix initial check schedule.
authorGunnar Beutner <gunnar.beutner@netways.de>
Thu, 28 Nov 2013 19:56:21 +0000 (20:56 +0100)
committerGunnar Beutner <gunnar.beutner@netways.de>
Thu, 28 Nov 2013 19:56:48 +0000 (20:56 +0100)
Fixes #5240

components/checker/checkercomponent.cpp
components/checker/checkercomponent.h
lib/base/dynamicobject.cpp
lib/base/dynamicobject.h
lib/icinga/service.cpp

index fd050c6f7647332419f54687e1ca08ffb11a5b0c..ef412794573323c21615bcbeea86a65589cf2143 100644 (file)
@@ -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<Service>()) {
-               ObjectHandler(service);
-       }
 }
 
 void CheckerComponent::Stop(void)
index 5d5402f1d0eeb1b3c17d05253d55c97afc74b969..8251874e44f49d618adae3cbf689fcdc15f1f8c3 100644 (file)
@@ -67,6 +67,7 @@ public:
                >
        > ServiceSet;
 
+       virtual void OnConfigLoaded(void);
        virtual void Start(void);
        virtual void Stop(void);
 
index 2bd119eb5bb119a44a06aa282f1959634e672f8b..4982f92487f8de2886979042e0b0ed8a51e0e123 100644 (file)
@@ -45,11 +45,6 @@ boost::signals2::signal<void (const DynamicObject::Ptr&)> DynamicObject::OnState
 boost::signals2::signal<void (const DynamicObject::Ptr&, const String&, bool)> DynamicObject::OnAuthorityChanged;
 
 DynamicObject::DynamicObject(void)
-{
-       SetActive(false);
-}
-
-DynamicObject::~DynamicObject(void)
 { }
 
 DynamicType::Ptr DynamicObject::GetType(void) const
index df3baf72465c2a9ec539c79c132a8eda3ac828bb..1383f66f3a0f98c607ce6293b7ccf7c498ef04f5 100644 (file)
@@ -52,8 +52,6 @@ class I2_BASE_API DynamicObject : public ObjectImpl<DynamicObject>
 public:
        DECLARE_PTR_TYPEDEFS(DynamicObject);
 
-       ~DynamicObject(void);
-
        static boost::signals2::signal<void (const DynamicObject::Ptr&)> OnStarted;
        static boost::signals2::signal<void (const DynamicObject::Ptr&)> OnStopped;
        static boost::signals2::signal<void (const DynamicObject::Ptr&)> OnStateChanged;
index 4c909118bfd4ba2bd32c837c49e877d572cae2e7..fcca38ed382325df3b3da05ff0b946eaac6a6f12 100644 (file)
@@ -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)