mirror of https://github.com/Icinga/icinga2.git
Fix timeperiod update bug.
This commit is contained in:
parent
a10a4013c7
commit
77a945157f
|
@ -70,6 +70,8 @@ void TimePeriod::AddSegment(double begin, double end)
|
||||||
{
|
{
|
||||||
ASSERT(OwnsLock());
|
ASSERT(OwnsLock());
|
||||||
|
|
||||||
|
Log(LogDebug, "icinga", "Adding segment '" + Utility::FormatDateTime("%c", begin) + "' <-> '" + Utility::FormatDateTime("%c", end) + "' to TimePeriod '" + GetName() + "'");
|
||||||
|
|
||||||
if (m_ValidBegin.IsEmpty() || begin < m_ValidBegin)
|
if (m_ValidBegin.IsEmpty() || begin < m_ValidBegin)
|
||||||
m_ValidBegin = begin;
|
m_ValidBegin = begin;
|
||||||
|
|
||||||
|
@ -119,6 +121,8 @@ void TimePeriod::RemoveSegment(double begin, double end)
|
||||||
{
|
{
|
||||||
ASSERT(OwnsLock());
|
ASSERT(OwnsLock());
|
||||||
|
|
||||||
|
Log(LogDebug, "icinga", "Removing segment '" + Utility::FormatDateTime("%c", begin) + "' <-> '" + Utility::FormatDateTime("%c", end) + "' from TimePeriod '" + GetName() + "'");
|
||||||
|
|
||||||
if (m_ValidBegin.IsEmpty() || begin < m_ValidBegin)
|
if (m_ValidBegin.IsEmpty() || begin < m_ValidBegin)
|
||||||
m_ValidBegin = begin;
|
m_ValidBegin = begin;
|
||||||
|
|
||||||
|
@ -147,22 +151,26 @@ void TimePeriod::RemoveSegment(double begin, double end)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Adjust the begin/end timestamps so as to not overlap with the specified range. */
|
/* Adjust the begin/end timestamps so as to not overlap with the specified range. */
|
||||||
if (segment->Get("begin") < end)
|
if (segment->Get("begin") > begin && segment->Get("begin") < end)
|
||||||
segment->Set("begin", end);
|
segment->Set("begin", end);
|
||||||
|
|
||||||
if (segment->Get("end") > begin)
|
if (segment->Get("end") > begin && segment->Get("end") < end)
|
||||||
segment->Set("end", begin);
|
segment->Set("end", begin);
|
||||||
|
|
||||||
newSegments->Add(segment);
|
newSegments->Add(segment);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Segments = newSegments;
|
m_Segments = newSegments;
|
||||||
|
|
||||||
|
Dump();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TimePeriod::PurgeSegments(double end)
|
void TimePeriod::PurgeSegments(double end)
|
||||||
{
|
{
|
||||||
ASSERT(OwnsLock());
|
ASSERT(OwnsLock());
|
||||||
|
|
||||||
|
Log(LogDebug, "icinga", "Purging segments older than '" + Utility::FormatDateTime("%c", end) + "' from TimePeriod '" + GetName() + "'");
|
||||||
|
|
||||||
if (m_ValidBegin.IsEmpty() || end < m_ValidBegin)
|
if (m_ValidBegin.IsEmpty() || end < m_ValidBegin)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -306,6 +314,7 @@ void TimePeriod::Dump(void)
|
||||||
Array::Ptr segments = m_Segments;
|
Array::Ptr segments = m_Segments;
|
||||||
|
|
||||||
Log(LogDebug, "icinga", "Dumping TimePeriod '" + GetName() + "'");
|
Log(LogDebug, "icinga", "Dumping TimePeriod '" + GetName() + "'");
|
||||||
|
Log(LogDebug, "icinga", "Valid from '" + Utility::FormatDateTime("%c", m_ValidBegin) + "' until '" + Utility::FormatDateTime("%c", m_ValidEnd));
|
||||||
|
|
||||||
if (segments) {
|
if (segments) {
|
||||||
ObjectLock dlock(segments);
|
ObjectLock dlock(segments);
|
||||||
|
|
Loading…
Reference in New Issue