From a37b641a9b2deecb3585d51bf0a526868c89af64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Z=C3=ADpek?= Date: Tue, 7 Apr 2026 17:40:44 +0200 Subject: [PATCH] Fix CPU usage hopefully --- server/app/alerts.go | 10 +++++++--- server/services/alerts_evaluator_service.go | 7 +++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/server/app/alerts.go b/server/app/alerts.go index dbcf4a3..63b5abc 100644 --- a/server/app/alerts.go +++ b/server/app/alerts.go @@ -6,16 +6,20 @@ import ( ) func (s *Server) StartAlerts() { - ticker := time.NewTicker(time.Second * 1) - go func() { for { + interval := time.Second * 5 + startedAt := time.Now() + err := s.Services.AlertsEvaluator.EvaluateAlerts() if err != nil { fmt.Println("Error evaluating alerts: ", err) } - <-ticker.C + elapsed := time.Since(startedAt) + if elapsed < interval { + time.Sleep(interval - elapsed) + } } }() } diff --git a/server/services/alerts_evaluator_service.go b/server/services/alerts_evaluator_service.go index 5b26384..18ee209 100644 --- a/server/services/alerts_evaluator_service.go +++ b/server/services/alerts_evaluator_service.go @@ -157,8 +157,11 @@ func (s *AlertsEvaluatorService) EvaluateAlert(alert *models.AlertItem) error { } } - if newStatus != alert.LastStatus || newStatus == models.AlertStatusOk { - s.ctx.DB.Exec("UPDATE alerts SET last_status = ?, last_status_at = ? WHERE id = ?", newStatus, time.Now().Unix(), alert.Id) + if newStatus != alert.LastStatus { + _, err := s.ctx.DB.Exec("UPDATE alerts SET last_status = ?, last_status_at = ? WHERE id = ?", newStatus, time.Now().Unix(), alert.Id) + if err != nil { + return fmt.Errorf("error updating alert status: %v", err) + } if newStatus == models.AlertStatusAlerting || newStatus == models.AlertStatusOk { sensor, err := s.ctx.Services.Sensors.GetById(sensorId)