From 8079f22003ca53d8b4f58e268bd525e167274e94 Mon Sep 17 00:00:00 2001 From: Marek Knappe Date: Wed, 20 May 2020 14:27:31 +1000 Subject: [PATCH] Fixing issue #3842 --- app/Repositories/Metric/MetricRepository.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/Repositories/Metric/MetricRepository.php b/app/Repositories/Metric/MetricRepository.php index a97c5abae368..c424336b19cd 100644 --- a/app/Repositories/Metric/MetricRepository.php +++ b/app/Repositories/Metric/MetricRepository.php @@ -65,15 +65,23 @@ public function listPointsLastHour(Metric $metric) $points = $this->repository->getPointsSinceMinutes($metric, $nrOfMinutes + $metric->threshold)->pluck('value', 'key')->take(-$nrOfMinutes); $timeframe = $nrOfMinutes; + + //Settings counter for minutes without data + $minutesWithNoData = 0; + for ($i = 0; $i < $timeframe; $i++) { if (!$points->has($pointKey)) { if ($i >= $metric->threshold) { $points->put($pointKey, $metric->default_value); + //We put default value as metric, so we can reset counter for minutes without data + $minutesWithNoData = 0; } else { - // The point not found is still within the threshold, so it is ignored and - // the timeframe is shifted by one minute - $timeframe++; + //We didn't find any data, but threshold is not meet yet so we just adding to counter + $minutesWithNoData++; } + } else { + //We found data within this threshold, zeroing counter + $minutesWithNoData = 0; } $pointKey = $dateTime->sub(new DateInterval('PT1M'))->format('Y-m-d H:i');