Merge branch 'feature/race-cond-5337' into next

Fixes #5337
This commit is contained in:
Gunnar Beutner 2013-12-15 18:46:29 +01:00
commit 84fbbd5beb
3 changed files with 15 additions and 10 deletions

View File

@ -88,12 +88,12 @@ void icinga::Log(LogSeverity severity, const String& facility,
bool processed = false; bool processed = false;
BOOST_FOREACH(const Logger::Ptr& logger, Logger::GetLoggers()) { BOOST_FOREACH(const Logger::Ptr& logger, Logger::GetLoggers()) {
if (!logger->IsActive())
continue;
{ {
ObjectLock llock(logger); ObjectLock llock(logger);
if (!logger->IsActive())
continue;
if (entry.Severity >= logger->GetMinSeverity()) if (entry.Severity >= logger->GetMinSeverity())
logger->ProcessLogEntry(entry); logger->ProcessLogEntry(entry);
} }

View File

@ -32,17 +32,20 @@ REGISTER_TYPE(TimePeriod);
static Timer::Ptr l_UpdateTimer; static Timer::Ptr l_UpdateTimer;
INITIALIZE_ONCE(&TimePeriod::StaticInitialize);
void TimePeriod::StaticInitialize(void)
{
l_UpdateTimer = make_shared<Timer>();
l_UpdateTimer->SetInterval(300);
l_UpdateTimer->OnTimerExpired.connect(boost::bind(&TimePeriod::UpdateTimerHandler));
l_UpdateTimer->Start();
}
void TimePeriod::Start(void) void TimePeriod::Start(void)
{ {
DynamicObject::Start(); DynamicObject::Start();
if (!l_UpdateTimer) {
l_UpdateTimer = make_shared<Timer>();
l_UpdateTimer->SetInterval(300);
l_UpdateTimer->OnTimerExpired.connect(boost::bind(&TimePeriod::UpdateTimerHandler));
l_UpdateTimer->Start();
}
/* Pre-fill the time period for the next 24 hours. */ /* Pre-fill the time period for the next 24 hours. */
double now = Utility::GetTime(); double now = Utility::GetTime();
UpdateRegion(now, now + 24 * 3600, true); UpdateRegion(now, now + 24 * 3600, true);

View File

@ -38,6 +38,8 @@ public:
DECLARE_PTR_TYPEDEFS(TimePeriod); DECLARE_PTR_TYPEDEFS(TimePeriod);
DECLARE_TYPENAME(TimePeriod); DECLARE_TYPENAME(TimePeriod);
static void StaticInitialize(void);
virtual void Start(void); virtual void Start(void);
void UpdateRegion(double begin, double end, bool clearExisting); void UpdateRegion(double begin, double end, bool clearExisting);