mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
parent
0d7a871223
commit
04690ca920
@ -26,6 +26,7 @@ type EvalContext struct {
|
|||||||
dashboardSlug string
|
dashboardSlug string
|
||||||
ImagePublicUrl string
|
ImagePublicUrl string
|
||||||
ImageOnDiskPath string
|
ImageOnDiskPath string
|
||||||
|
RetryCount int
|
||||||
}
|
}
|
||||||
|
|
||||||
type StateDescription struct {
|
type StateDescription struct {
|
||||||
@ -111,5 +112,6 @@ func NewEvalContext(rule *Rule) *EvalContext {
|
|||||||
DoneChan: make(chan bool, 1),
|
DoneChan: make(chan bool, 1),
|
||||||
CancelChan: make(chan bool, 1),
|
CancelChan: make(chan bool, 1),
|
||||||
log: log.New("alerting.evalContext"),
|
log: log.New("alerting.evalContext"),
|
||||||
|
RetryCount: 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,10 @@ import (
|
|||||||
"github.com/grafana/grafana/pkg/metrics"
|
"github.com/grafana/grafana/pkg/metrics"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
MaxRetries int = 1
|
||||||
|
)
|
||||||
|
|
||||||
type DefaultEvalHandler struct {
|
type DefaultEvalHandler struct {
|
||||||
log log.Logger
|
log log.Logger
|
||||||
alertJobTimeout time.Duration
|
alertJobTimeout time.Duration
|
||||||
@ -28,8 +32,24 @@ func (e *DefaultEvalHandler) Eval(context *EvalContext) {
|
|||||||
context.Error = fmt.Errorf("Timeout")
|
context.Error = fmt.Errorf("Timeout")
|
||||||
context.EndTime = time.Now()
|
context.EndTime = time.Now()
|
||||||
e.log.Debug("Job Execution timeout", "alertId", context.Rule.Id)
|
e.log.Debug("Job Execution timeout", "alertId", context.Rule.Id)
|
||||||
|
e.retry(context)
|
||||||
case <-context.DoneChan:
|
case <-context.DoneChan:
|
||||||
e.log.Debug("Job Execution done", "timeMs", context.GetDurationMs(), "alertId", context.Rule.Id, "firing", context.Firing)
|
e.log.Debug("Job Execution done", "timeMs", context.GetDurationMs(), "alertId", context.Rule.Id, "firing", context.Firing)
|
||||||
|
|
||||||
|
if context.Error != nil {
|
||||||
|
e.retry(context)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *DefaultEvalHandler) retry(context *EvalContext) {
|
||||||
|
e.log.Debug("Retrying eval exeuction", "alertId", context.Rule.Id)
|
||||||
|
|
||||||
|
context.RetryCount++
|
||||||
|
if context.RetryCount > MaxRetries {
|
||||||
|
context.DoneChan = make(chan bool, 1)
|
||||||
|
context.CancelChan = make(chan bool, 1)
|
||||||
|
e.Eval(context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user