diff --git a/lib/db_ido/dbconnection.cpp b/lib/db_ido/dbconnection.cpp index 6ca2d5ace3a..8d81208efe1 100644 --- a/lib/db_ido/dbconnection.cpp +++ b/lib/db_ido/dbconnection.cpp @@ -27,7 +27,6 @@ #include "base/convert.hpp" #include "base/objectlock.hpp" #include "base/utility.hpp" -#include "base/initialize.hpp" #include "base/logger.hpp" #include "base/scriptfunction.hpp" #include @@ -38,8 +37,7 @@ REGISTER_TYPE(DbConnection); REGISTER_SCRIPTFUNCTION(ValidateFailoverTimeout, &DbConnection::ValidateFailoverTimeout); Timer::Ptr DbConnection::m_ProgramStatusTimer; - -INITIALIZE_ONCE(&DbConnection::StaticInitialize); +boost::once_flag DbConnection::m_OnceFlag = BOOST_ONCE_INIT; void DbConnection::OnConfigLoaded(void) { @@ -51,6 +49,8 @@ void DbConnection::OnConfigLoaded(void) SetHAMode(HARunEverywhere); } + + boost::call_once(m_OnceFlag, InitializeDbTimer); } void DbConnection::Start(void) @@ -83,7 +83,7 @@ void DbConnection::Pause(void) m_CleanUpTimer.reset(); } -void DbConnection::StaticInitialize(void) +void DbConnection::InitializeDbTimer(void) { m_ProgramStatusTimer = new Timer(); m_ProgramStatusTimer->SetInterval(10); diff --git a/lib/db_ido/dbconnection.hpp b/lib/db_ido/dbconnection.hpp index d4e674a554e..d6d6cfe0289 100644 --- a/lib/db_ido/dbconnection.hpp +++ b/lib/db_ido/dbconnection.hpp @@ -25,6 +25,7 @@ #include "db_ido/dbobject.hpp" #include "db_ido/dbquery.hpp" #include "base/timer.hpp" +#include namespace icinga { @@ -39,7 +40,7 @@ class I2_DB_IDO_API DbConnection : public ObjectImpl public: DECLARE_OBJECT(DbConnection); - static void StaticInitialize(void); + static void InitializeDbTimer(void); void SetObjectID(const DbObject::Ptr& dbobj, const DbReference& dbref); DbReference GetObjectID(const DbObject::Ptr& dbobj) const; @@ -96,6 +97,7 @@ class I2_DB_IDO_API DbConnection : public ObjectImpl virtual void ClearConfigTable(const String& table) = 0; static Timer::Ptr m_ProgramStatusTimer; + static boost::once_flag m_OnceFlag; static void InsertRuntimeVariable(const String& key, const Value& value); static void ProgramStatusHandler(void);