[v10.0.x] Alerting: Exclude expression refIDs from NoData state (#72394)
* Alerting: Exclude expression refIDs from NoData state (#72219)
(cherry picked from commit 5ba164d92b)
* use expr.IsDatasource
---------
Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
This commit is contained in:
co-authored by
Yuri Tseretyan
parent
1389f0f6f6
commit
f848c9dd77
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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{{
|
||||
|
||||
Reference in New Issue
Block a user