From f848c9dd774f6c927a510b581b5fca5ec6daa0cd Mon Sep 17 00:00:00 2001 From: "grafana-delivery-bot[bot]" <132647405+grafana-delivery-bot[bot]@users.noreply.github.com> Date: Wed, 26 Jul 2023 12:45:27 -0400 Subject: [PATCH] [v10.0.x] Alerting: Exclude expression refIDs from NoData state (#72394) * Alerting: Exclude expression refIDs from NoData state (#72219) (cherry picked from commit 5ba164d92b0f181039e589cbf2ccd6fe4528b63f) * use expr.IsDatasource --------- Co-authored-by: Yuri Tseretyan --- pkg/services/ngalert/eval/eval.go | 4 +--- pkg/services/ngalert/eval/eval_test.go | 8 ++++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pkg/services/ngalert/eval/eval.go b/pkg/services/ngalert/eval/eval.go index e5b391aa4e6..49871687d74 100644 --- a/pkg/services/ngalert/eval/eval.go +++ b/pkg/services/ngalert/eval/eval.go @@ -322,8 +322,6 @@ func queryDataResponseToExecutionResults(c models.Condition, execResp *backend.Q for _, next := range c.Data { datasourceUIDsForRefIDs[next.RefID] = next.DatasourceUID } - // datasourceExprUID is a special DatasourceUID for expressions - datasourceExprUID := strconv.FormatInt(expr.DatasourceID, 10) result := ExecutionResults{Results: make(map[string]data.Frames)} for refID, res := range execResp.Responses { @@ -345,7 +343,7 @@ func queryDataResponseToExecutionResults(c models.Condition, execResp *backend.Q hasNoFrames := len(res.Frames) == 0 hasNoFields := len(res.Frames) == 1 && len(res.Frames[0].Fields) == 0 if hasNoFrames || hasNoFields { - if s, ok := datasourceUIDsForRefIDs[refID]; ok && s != datasourceExprUID { + if s, ok := datasourceUIDsForRefIDs[refID]; ok && !expr.IsDataSource(s) { result.NoData[refID] = s } } diff --git a/pkg/services/ngalert/eval/eval_test.go b/pkg/services/ngalert/eval/eval_test.go index b93dc33f953..44a80ceb77e 100644 --- a/pkg/services/ngalert/eval/eval_test.go +++ b/pkg/services/ngalert/eval/eval_test.go @@ -561,11 +561,19 @@ func TestEvaluate(t *testing.T) { Data: []models.AlertQuery{{ RefID: "A", DatasourceUID: "test", + }, { + RefID: "B", + DatasourceUID: expr.DatasourceUID, + }, { + RefID: "C", + DatasourceUID: expr.OldDatasourceUID, }}, }, resp: backend.QueryDataResponse{ Responses: backend.Responses{ "A": {Frames: nil}, + "B": {Frames: []*data.Frame{{Fields: nil}}}, + "C": {Frames: nil}, }, }, expected: Results{{