diff --git a/model/alertrule.go b/model/alertrule.go index 27e6531..829722a 100644 --- a/model/alertrule.go +++ b/model/alertrule.go @@ -1,6 +1,8 @@ package model import ( + "slices" + "github.com/nezhahq/nezha/pkg/utils" "gorm.io/gorm" ) @@ -88,10 +90,13 @@ func (r *AlertRule) Check(points [][]bool) (maxDuration int, passed bool) { if maxDuration < 1 { maxDuration = 1 } - for j := len(points) - 1; j >= 0; j-- { - if !points[j][i] { - failCount++ - break + LOOP: + for _, point := range points { + for _, check := range slices.Backward(point) { + if !check { + failCount++ + break LOOP + } } } } else {