From 262e7193a324f86c2a55a1b2b9d0b3faaba662e8 Mon Sep 17 00:00:00 2001 From: bergquist Date: Tue, 27 Sep 2016 11:16:34 +0200 Subject: [PATCH] feat(alerting): keep proccessing results even if one response panics --- pkg/services/alerting/engine.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pkg/services/alerting/engine.go b/pkg/services/alerting/engine.go index 7abfe32425c..19befe87ed8 100644 --- a/pkg/services/alerting/engine.go +++ b/pkg/services/alerting/engine.go @@ -93,14 +93,18 @@ func (e *Engine) executeJob(job *Job) { } func (e *Engine) resultDispatcher() { + for result := range e.resultQueue { + go e.handleResponse(result) + } +} + +func (e *Engine) handleResponse(result *EvalContext) { defer func() { if err := recover(); err != nil { e.log.Error("Panic in resultDispatcher", "error", err, "stack", log.Stack(1)) } }() - for result := range e.resultQueue { - e.log.Debug("Alert Rule Result", "ruleId", result.Rule.Id, "firing", result.Firing) - e.resultHandler.Handle(result) - } + e.log.Debug("Alert Rule Result", "ruleId", result.Rule.Id, "firing", result.Firing) + e.resultHandler.Handle(result) }