Explorar o código

feat(alerting): recover from panic

bergquist %!s(int64=9) %!d(string=hai) anos
pai
achega
2c7dbde06a
Modificáronse 1 ficheiros con 7 adicións e 0 borrados
  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)