@@ -318,9 +318,8 @@ bool CResourceMonitor::needToSendReport(model_t::EAssignmentMemoryBasis currentA
318318 }
319319
320320 // Have we had new allocation failures
321- if (!m_AllocationFailures.empty ()) {
322- core_t ::TTime latestAllocationError{(--m_AllocationFailures.end ())->first };
323- if (latestAllocationError > m_LastAllocationFailureReport) {
321+ if (m_AllocationFailuresCount != 0 ) {
322+ if (m_LastAllocationFailureTime > m_LastAllocationFailureReport) {
324323 return true ;
325324 }
326325 }
@@ -369,8 +368,8 @@ void CResourceMonitor::sendMemoryUsageReport(core_t::TTime bucketStartTime,
369368 total);
370369 if (m_MemoryUsageReporter) {
371370 m_MemoryUsageReporter (this ->createMemoryUsageReport (bucketStartTime));
372- if (!m_AllocationFailures. empty () ) {
373- m_LastAllocationFailureReport = m_AllocationFailures. rbegin ()-> first ;
371+ if (m_AllocationFailuresCount != 0 ) {
372+ m_LastAllocationFailureReport = m_LastAllocationFailureTime ;
374373 }
375374 }
376375 m_PreviousTotal = total;
@@ -395,7 +394,7 @@ CResourceMonitor::createMemoryUsageReport(core_t::TTime bucketStartTime) {
395394 for (const auto & resource : m_Resources) {
396395 resource.first ->updateModelSizeStats (res);
397396 }
398- res.s_AllocationFailures += m_AllocationFailures. size () ;
397+ res.s_AllocationFailures += m_AllocationFailuresCount ;
399398 res.s_OverallCategorizerStats .s_MemoryCategorizationFailures += m_CategorizerAllocationFailures;
400399 return res;
401400}
@@ -428,7 +427,10 @@ std::size_t CResourceMonitor::persistenceMemoryIncreaseFactor() const {
428427
429428void CResourceMonitor::acceptAllocationFailureResult (core_t ::TTime time) {
430429 m_MemoryStatus = model_t ::E_MemoryStatusHardLimit;
431- ++m_AllocationFailures[time];
430+ if (time > m_LastAllocationFailureTime) {
431+ m_AllocationFailuresCount += 1 ;
432+ m_LastAllocationFailureTime = time;
433+ }
432434}
433435
434436void CResourceMonitor::startPruning () {
0 commit comments