feat(cron-alerts): added prom cron alerts

This commit is contained in:
aniket 2025-08-10 15:11:46 +05:30
parent 500c5ecd8c
commit 05a0ce64d3

View File

@ -98,6 +98,22 @@ func (g *PromRuleTask) Pause(b bool) {
func (g *PromRuleTask) Run(ctx context.Context) {
defer close(g.terminated)
defer func() {
if !g.markStale {
return
}
go func(now time.Time) {
for _, rule := range g.seriesInPreviousEval {
for _, r := range rule {
g.staleSeries = append(g.staleSeries, r)
}
}
// That can be garbage collected at this point.
g.seriesInPreviousEval = nil
}(time.Now())
}()
if g.IsCronSchedule() {
schedule, err := rrule.StrToRRule("DTSTART=" + g.scheduleStartsAt.UTC().Format("20060102T150405Z") + "\nRRULE:" + g.schedule) // assuming g.cronExpr contains the cron expression
if err != nil {
@ -190,24 +206,6 @@ func (g *PromRuleTask) Run(ctx context.Context) {
tick := time.NewTicker(g.frequency)
defer tick.Stop()
// defer cleanup
defer func() {
if !g.markStale {
return
}
go func(now time.Time) {
for _, rule := range g.seriesInPreviousEval {
for _, r := range rule {
g.staleSeries = append(g.staleSeries, r)
}
}
// That can be garbage collected at this point.
g.seriesInPreviousEval = nil
}(time.Now())
}()
iter()
// let the group iterate and run
@ -318,6 +316,7 @@ func (g *PromRuleTask) SetSchedule(schedule string, t time.Time) {
g.mtx.Lock()
defer g.mtx.Unlock()
g.schedule = schedule
g.scheduleStartsAt = t
}
// EvalTimestamp returns the immediately preceding consistently slotted evaluation time.