Alerting: Fix ConditionsCmd No Data for "has no value" (#58634)

This commit fixes a bug where ConditionsCmd returns No Data even when
the condition checks for "has no value". It should return 1 with a nil
match.
This commit is contained in:
George Robinson
2022-11-18 09:28:21 +00:00
committed by GitHub
parent 9c98314e9f
commit b77c3946a5
2 changed files with 14 additions and 11 deletions
+8 -4
View File
@@ -79,6 +79,12 @@ func (cmd *ConditionsCmd) Execute(_ context.Context, _ time.Time, vars mathexp.V
querySeriesSet := vars[c.InputRefID]
nilReducedCount := 0
firingCount := 0
if len(querySeriesSet.Values) == 0 {
// Append a NoData data frame so "has no value" still works
querySeriesSet.Values = append(querySeriesSet.Values, mathexp.NoData{}.New())
}
for _, val := range querySeriesSet.Values {
var reducedNum mathexp.Number
var name string
@@ -103,10 +109,6 @@ func (cmd *ConditionsCmd) Execute(_ context.Context, _ time.Time, vars mathexp.V
// TODO handle error / no data signals
thisCondNoDataFound := reducedNum.GetFloat64Value() == nil
if thisCondNoDataFound {
nilReducedCount++
}
evalRes := c.Evaluator.Eval(reducedNum)
if evalRes {
@@ -119,6 +121,8 @@ func (cmd *ConditionsCmd) Execute(_ context.Context, _ time.Time, vars mathexp.V
}
matches = append(matches, match)
firingCount++
} else if thisCondNoDataFound {
nilReducedCount++
}
}