Skip to content

Commit 0355d48

Browse files
committed
fix filter fingerprint logic in eval.recover
1 parent dce5724 commit 0355d48

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

alert/eval/eval.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,15 @@ func (t *AlertRule) getEvalTimeDuration(evalTimeType string, evalInterval int64)
223223
}
224224

225225
func (t *AlertRule) Recover(tenantId, ruleId string, eventCacheKey models.AlertEventCacheKey, faultCenterInfoKey models.FaultCenterInfoCacheKey, curFingerprints []string) {
226+
// 过滤空指纹
227+
var filteredCurFingerprints []string
228+
for _, fp := range curFingerprints {
229+
if fp != "" {
230+
filteredCurFingerprints = append(filteredCurFingerprints, fp)
231+
}
232+
}
233+
curFingerprints = filteredCurFingerprints
234+
226235
// 校验 key 非空
227236
if eventCacheKey == "" || faultCenterInfoKey == "" {
228237
logc.Errorf(t.ctx.Ctx, "AlertRule.Recover: eventCacheKey or faultCenterInfoKey is empty")
@@ -258,15 +267,6 @@ func (t *AlertRule) Recover(tenantId, ruleId string, eventCacheKey models.AlertE
258267
activeRuleFingerprints = append(activeRuleFingerprints, fingerprint)
259268
}
260269

261-
// 过滤空指纹
262-
filteredCurFingerprints := make([]string, 0, len(curFingerprints))
263-
for _, fp := range curFingerprints {
264-
if fp == "" {
265-
filteredCurFingerprints = append(filteredCurFingerprints, fp)
266-
}
267-
}
268-
curFingerprints = filteredCurFingerprints
269-
270270
/*
271271
从待恢复状态转换成告警状态(即在 Redis 中存在待恢复 且在 curFingerprints 存在告警的事件)
272272
*/
@@ -313,13 +313,13 @@ func (t *AlertRule) Recover(tenantId, ruleId string, eventCacheKey models.AlertE
313313
// 获取待恢复状态的时间戳
314314
wTime, err := t.ctx.Redis.PendingRecover().Get(tenantId, ruleId, fingerprint)
315315
if err == redis.Nil {
316-
// 进入待恢复状态, 如果不存在, 则记录当前时间
317-
t.ctx.Redis.PendingRecover().Set(tenantId, ruleId, fingerprint, curTime)
318316
// 转换状态, 标记为待恢复
319317
if err := newEvent.TransitionStatus(models.StatePendingRecovery); err != nil {
320318
logc.Errorf(t.ctx.Ctx, "Failed to transition to「pending_recovery」state for fingerprint %s: %v", fingerprint, err)
321319
continue
322320
}
321+
// 记录当前时间
322+
t.ctx.Redis.PendingRecover().Set(tenantId, ruleId, fingerprint, curTime)
323323
t.ctx.Redis.Alert().PushAlertEvent(newEvent)
324324
continue
325325
} else if err != nil {

0 commit comments

Comments
 (0)