From 01487e3ba6689db7382233448b30c358fb81fb64 Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Thu, 18 Jul 2024 20:10:23 +0800 Subject: [PATCH] fix: event alarm not insert to table alarm_event as manual sync alarm --- database/upgrade/upg_alarm_event.sql | 5 +++++ features/fm/alarm.go | 19 ++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/database/upgrade/upg_alarm_event.sql b/database/upgrade/upg_alarm_event.sql index 4831afeb..7a72e790 100644 --- a/database/upgrade/upg_alarm_event.sql +++ b/database/upgrade/upg_alarm_event.sql @@ -133,4 +133,9 @@ DELETE FROM `alarm` WHERE `orig_severity` = 'Event'; COMMIT; +DELETE FROM alarm_event WHERE id NOT IN (SELECT MIN(id) FROM alarm_event GROUP BY `ne_type`, `ne_id`, `alarm_id`, `event_time`); + +ALTER TABLE `alarm_event` +ADD UNIQUE INDEX IF NOT EXISTS `idx_uni_aid_ne_time`(`ne_type`, `ne_id`, `alarm_id`, `event_time`) USING BTREE; + SET FOREIGN_KEY_CHECKS = 1; diff --git a/features/fm/alarm.go b/features/fm/alarm.go index f1e05cbc..a8524bbd 100644 --- a/features/fm/alarm.go +++ b/features/fm/alarm.go @@ -320,7 +320,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) { alarmLog.AlarmCode = alarmData.AlarmCode alarmLog.AlarmStatus = alarmData.AlarmStatus alarmLog.EventTime = eventTime - log.Debug("alarmLog:", alarmLog) + log.Trace("alarmLog:", alarmLog) affected, err := session.Insert(alarmLog) if err != nil && affected <= 0 { @@ -434,7 +434,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) { if IsNeedToAckAlarm(valueJson, &alarmData) { SetAlarmAckInfo(valueJson, &alarmData) } - log.Debug("alarmData:", alarmData) + log.Trace("alarmData:", alarmData) if alarmData.OrigSeverity == "Event" && config.GetYamlConfig().Alarm.SplitEventAlarm { affected, err := xEngine.Table("alarm_event").InsertOne(alarmData) if err != nil && affected <= 0 { @@ -744,7 +744,20 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) { SetAlarmAckInfo(valueJson, &alarmData) } log.Trace("alarmData:", alarmData) - affected, err := session.Insert(alarmData) + var affected int64 + if alarmData.OrigSeverity == "Event" && config.GetYamlConfig().Alarm.SplitEventAlarm { + affected, err = session.Table("alarm_event").InsertOne(alarmData) + if err != nil && affected <= 0 { + log.Error("Failed to insert alarm_event:", err) + continue + } + } else { + affected, err = session.Table("alarm").Insert(alarmData) + if err != nil && affected <= 0 { + log.Error("Failed to insert alarm:", err) + continue + } + } if err == nil && affected > 0 { alarmLog := new(AlarmLog) alarmLog.NeType = alarmData.NeType