Przeglądaj źródła

feat(alerting): recover from panic

bergquist 9 lat temu
rodzic
commit
2c7dbde06a
1 zmienionych plików z 7 dodań i 0 usunięć
  1. 7 0
      pkg/services/alerting/engine.go

+ 7 - 0
pkg/services/alerting/engine.go

@@ -106,6 +106,13 @@ func (e *Engine) processJob(grafanaCtx context.Context, job *Job) error {
 	done := make(chan struct{})
 
 	go func() {
+		defer func() {
+			if err := recover(); err != nil {
+				e.log.Error("Alert Panic", "error", err, "stack", log.Stack(1))
+				close(done)
+			}
+		}()
+
 		e.evalHandler.Eval(evalContext)
 		e.resultHandler.Handle(evalContext)
 		close(done)