Skip to content

Commit

Permalink
Fix crash in DbConnection::ProgramStatusHandler
Browse files Browse the repository at this point in the history
fixes #8288
  • Loading branch information
gunnarbeutner authored and Crunsher committed Feb 4, 2015
1 parent 60fc750 commit 6e5c58a
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 5 deletions.
8 changes: 4 additions & 4 deletions lib/db_ido/dbconnection.cpp
Expand Up @@ -26,7 +26,6 @@
#include "base/convert.hpp"
#include "base/objectlock.hpp"
#include "base/utility.hpp"
#include "base/initialize.hpp"
#include "base/logger.hpp"
#include "base/function.hpp"
#include "base/exception.hpp"
Expand All @@ -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)
{
Expand All @@ -51,6 +49,8 @@ void DbConnection::OnConfigLoaded(void)

SetHAMode(HARunEverywhere);
}

boost::call_once(m_OnceFlag, InitializeDbTimer);
}

void DbConnection::Start(void)
Expand Down Expand Up @@ -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);
Expand Down
4 changes: 3 additions & 1 deletion lib/db_ido/dbconnection.hpp
Expand Up @@ -25,6 +25,7 @@
#include "db_ido/dbobject.hpp"
#include "db_ido/dbquery.hpp"
#include "base/timer.hpp"
#include <boost/thread/once.hpp>

namespace icinga
{
Expand All @@ -39,7 +40,7 @@ class I2_DB_IDO_API DbConnection : public ObjectImpl<DbConnection>
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;
Expand Down Expand Up @@ -96,6 +97,7 @@ class I2_DB_IDO_API DbConnection : public ObjectImpl<DbConnection>
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);
Expand Down

0 comments on commit 6e5c58a

Please sign in to comment.