@@ -223,6 +223,15 @@ func (t *AlertRule) getEvalTimeDuration(evalTimeType string, evalInterval int64)
223223}
224224
225225func (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