From 3c249e1b99403daeda7ba1bfb70191a1a11be391 Mon Sep 17 00:00:00 2001 From: George Robinson Date: Tue, 6 Dec 2022 18:44:06 +0000 Subject: [PATCH] Fix incorrect start time for DatasourceError alerts (#59903) --- pkg/services/ngalert/state/manager_test.go | 2 +- pkg/services/ngalert/state/state.go | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/services/ngalert/state/manager_test.go b/pkg/services/ngalert/state/manager_test.go index 075f3b3a822..8ee29ab0efd 100644 --- a/pkg/services/ngalert/state/manager_test.go +++ b/pkg/services/ngalert/state/manager_test.go @@ -1868,7 +1868,7 @@ func TestProcessEvalResults(t *testing.T) { Values: make(map[string]*float64), }, }, - StartsAt: evaluationTime.Add(20 * time.Second), + StartsAt: evaluationTime.Add(30 * time.Second), EndsAt: evaluationTime.Add(50 * time.Second).Add(state.ResendDelay * 3), LastEvaluationTime: evaluationTime.Add(50 * time.Second), EvaluationDuration: evaluationDuration, diff --git a/pkg/services/ngalert/state/state.go b/pkg/services/ngalert/state/state.go index d0892db5d74..65ba71c72e2 100644 --- a/pkg/services/ngalert/state/state.go +++ b/pkg/services/ngalert/state/state.go @@ -198,6 +198,11 @@ func (a *State) resultError(alertRule *models.AlertRule, result eval.Result) { // is unavailable or queries against the datasource returns errors, and is // then resolved as soon as the datasource is available and queries return // without error + if a.State != execErrState { + // Set the start time if the state changes from Alerting to Error or from + // Error to Alerting + a.StartsAt = result.EvaluatedAt + } a.State = execErrState a.setEndsAt(alertRule, result) case eval.Pending: