瀏覽代碼

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 年之前
父節點
當前提交
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) {