]> granicus.if.org Git - icinga2/commitdiff
Fix that HA enabled objects are started before config validation has finished
authorMichael Friedrich <michael.friedrich@netways.de>
Wed, 17 Aug 2016 07:19:05 +0000 (09:19 +0200)
committerMichael Friedrich <michael.friedrich@netways.de>
Wed, 17 Aug 2016 07:19:58 +0000 (09:19 +0200)
fixes #12460

lib/remote/apilistener.cpp
lib/remote/apilistener.hpp
lib/remote/authority.cpp

index 8f8c0d2359669b74e850b58e026b8aaf93edb8ed..7082d964318cf116d7548ee92fef7d1b431cbe44 100644 (file)
@@ -156,6 +156,11 @@ void ApiListener::Start(bool runtimeCreated)
        m_ReconnectTimer->Start();
        m_ReconnectTimer->Reschedule(0);
 
+       m_AuthorityTimer = new Timer();
+       m_AuthorityTimer->OnTimerExpired.connect(boost::bind(&ApiListener::UpdateObjectAuthority));
+       m_AuthorityTimer->SetInterval(30);
+       m_AuthorityTimer->Start();
+
        OnMasterChanged(true);
 }
 
index 49a57e181fa1c42e85a8c2844bdc02c7b9464a70..9cb09fc310d1f07f95756a7f195961840b6fb4c3 100644 (file)
@@ -116,6 +116,7 @@ private:
        std::set<HttpServerConnection::Ptr> m_HttpClients;
        Timer::Ptr m_Timer;
        Timer::Ptr m_ReconnectTimer;
+       Timer::Ptr m_AuthorityTimer;
        Endpoint::Ptr m_LocalEndpoint;
 
        static ApiListener::Ptr m_Instance;
index 77c4e180bd86b2f4fc101e5bb60aebb9649700aa..5a26090e0a44c87391d72372625051a81358517b 100644 (file)
 #include "remote/apilistener.hpp"
 #include "base/configtype.hpp"
 #include "base/utility.hpp"
-#include "base/initialize.hpp"
-#include "base/timer.hpp"
 #include <boost/foreach.hpp>
 
 using namespace icinga;
 
-static Timer::Ptr l_AuthorityTimer;
-
 static bool ObjectNameLessComparer(const ConfigObject::Ptr& a, const ConfigObject::Ptr& b)
 {
        return a->GetName() < b->GetName();
@@ -70,7 +66,7 @@ void ApiListener::UpdateObjectAuthority(void)
                        continue;
 
                BOOST_FOREACH(const ConfigObject::Ptr& object, dtype->GetObjects()) {
-                       if (object->GetHAMode() != HARunOnce)
+                       if (!object->IsActive() || object->GetHAMode() != HARunOnce)
                                continue;
 
                        bool authority;
@@ -84,13 +80,3 @@ void ApiListener::UpdateObjectAuthority(void)
                }
        }
 }
-
-static void StaticInitialize(void)
-{
-       l_AuthorityTimer = new Timer();
-       l_AuthorityTimer->OnTimerExpired.connect(boost::bind(&ApiListener::UpdateObjectAuthority));
-       l_AuthorityTimer->SetInterval(30);
-       l_AuthorityTimer->Start();
-}
-
-INITIALIZE_ONCE(StaticInitialize);