Commit ff5d4e8e by bergquist

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
parent 89a3d023
...@@ -42,6 +42,7 @@ func (c *QueryCondition) Eval(context *alerting.EvalContext) { ...@@ -42,6 +42,7 @@ func (c *QueryCondition) Eval(context *alerting.EvalContext) {
} }
emptySerieCount := 0 emptySerieCount := 0
evalMatchCount := 0
for _, series := range seriesList { for _, series := range seriesList {
reducedValue := c.Reducer.Reduce(series) reducedValue := c.Reducer.Reduce(series)
evalMatch := c.Evaluator.Eval(reducedValue) evalMatch := c.Evaluator.Eval(reducedValue)
...@@ -58,6 +59,7 @@ func (c *QueryCondition) Eval(context *alerting.EvalContext) { ...@@ -58,6 +59,7 @@ func (c *QueryCondition) Eval(context *alerting.EvalContext) {
} }
if evalMatch { if evalMatch {
evalMatchCount++
context.EvalMatches = append(context.EvalMatches, &alerting.EvalMatch{ context.EvalMatches = append(context.EvalMatches, &alerting.EvalMatch{
Metric: series.Name, Metric: series.Name,
Value: reducedValue.Float64, Value: reducedValue.Float64,
...@@ -66,7 +68,7 @@ func (c *QueryCondition) Eval(context *alerting.EvalContext) { ...@@ -66,7 +68,7 @@ func (c *QueryCondition) Eval(context *alerting.EvalContext) {
} }
context.NoDataFound = emptySerieCount == len(seriesList) 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) { func (c *QueryCondition) executeQuery(context *alerting.EvalContext, timeRange *tsdb.TimeRange) (tsdb.TimeSeriesSlice, error) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment