Просмотр исходного кода

fix(alerting): temp fix for broken AND condition

This should be refactored. lets return condition results instead
of setting new value on the evalContext. The condition execution
should only be able to update its own state.

closes #6449
bergquist 9 лет назад
Родитель
Сommit
ff5d4e8e0c
1 измененных файлов с 3 добавлено и 1 удалено
  1. 3 1
      pkg/services/alerting/conditions/query.go

+ 3 - 1
pkg/services/alerting/conditions/query.go

@@ -42,6 +42,7 @@ func (c *QueryCondition) Eval(context *alerting.EvalContext) {
 	}
 
 	emptySerieCount := 0
+	evalMatchCount := 0
 	for _, series := range seriesList {
 		reducedValue := c.Reducer.Reduce(series)
 		evalMatch := c.Evaluator.Eval(reducedValue)
@@ -58,6 +59,7 @@ func (c *QueryCondition) Eval(context *alerting.EvalContext) {
 		}
 
 		if evalMatch {
+			evalMatchCount++
 			context.EvalMatches = append(context.EvalMatches, &alerting.EvalMatch{
 				Metric: series.Name,
 				Value:  reducedValue.Float64,
@@ -66,7 +68,7 @@ func (c *QueryCondition) Eval(context *alerting.EvalContext) {
 	}
 
 	context.NoDataFound = emptySerieCount == len(seriesList)
-	context.Firing = len(context.EvalMatches) > 0
+	context.Firing = evalMatchCount > 0
 }
 
 func (c *QueryCondition) executeQuery(context *alerting.EvalContext, timeRange *tsdb.TimeRange) (tsdb.TimeSeriesSlice, error) {