mirror of
https://github.com/nezhahq/nezha.git
synced 2025-01-22 12:48:14 -05:00
fix: 修复修改通知方式所在组后 不会移除其原有map映射关系的问题
This commit is contained in:
parent
2ccb8f3477
commit
26646bff1a
@ -71,10 +71,11 @@ type Config struct {
|
||||
ProxyGRPCPort uint
|
||||
TLS bool
|
||||
|
||||
EnablePlainIPInNotification bool // 通知信息IP不打码
|
||||
|
||||
// IP变更提醒
|
||||
EnableIPChangeNotification bool
|
||||
IPChangeNotificationTag string
|
||||
EnablePlainIPInNotification bool
|
||||
Cover uint8 // 覆盖范围(0:提醒未被 IgnoredIPNotification 包含的所有服务器; 1:仅提醒被 IgnoredIPNotification 包含的服务器;)
|
||||
IgnoredIPNotification string // 特定服务器IP(多个服务器用逗号分隔)
|
||||
|
||||
|
@ -30,10 +30,11 @@ func LoadCronTasks() {
|
||||
var err error
|
||||
var notificationTagList []string
|
||||
notificationMsgMap := make(map[string]*bytes.Buffer)
|
||||
for i := range crons {
|
||||
for i := 0; i < len(crons); i++ {
|
||||
// 旧版本计划任务可能不存在通知组 为其添加默认通知组
|
||||
if crons[i].NotificationTag == "" {
|
||||
AddDefaultCronNotificationTag(&crons[i])
|
||||
crons[i].NotificationTag = "default"
|
||||
DB.Save(crons[i])
|
||||
}
|
||||
// 注册计划任务
|
||||
crons[i].CronJobID, err = Cron.AddFunc(crons[i].Scheduler, CronTrigger(crons[i]))
|
||||
@ -57,17 +58,6 @@ func LoadCronTasks() {
|
||||
Cron.Start()
|
||||
}
|
||||
|
||||
// AddDefaultCronNotificationTag 添加默认的计划任务通知组
|
||||
func AddDefaultCronNotificationTag(c *model.Cron) {
|
||||
CronLock.Lock()
|
||||
defer CronLock.Unlock()
|
||||
|
||||
if c.NotificationTag == "" {
|
||||
c.NotificationTag = "default"
|
||||
}
|
||||
DB.Save(c)
|
||||
}
|
||||
|
||||
func ManualTrigger(c model.Cron) {
|
||||
CronTrigger(c)()
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ func LoadNotifications() {
|
||||
if err := DB.Find(¬ifications).Error; err != nil {
|
||||
panic(err)
|
||||
}
|
||||
for i := range notifications {
|
||||
for i := 0; i < len(notifications); i++ {
|
||||
// 旧版本的Tag可能不存在 自动设置为默认值
|
||||
if notifications[i].Tag == "" {
|
||||
SetDefaultNotificationTagInDB(¬ifications[i])
|
||||
@ -58,7 +58,7 @@ func OnRefreshOrAddNotification(n *model.Notification) {
|
||||
defer notificationsLock.Unlock()
|
||||
|
||||
var isEdit bool
|
||||
if _, ok := NotificationList[n.Tag][n.ID]; ok {
|
||||
if _, ok := NotificationIDToTag[n.ID]; ok {
|
||||
isEdit = true
|
||||
}
|
||||
if !isEdit {
|
||||
@ -80,7 +80,16 @@ func AddNotificationToList(n *model.Notification) {
|
||||
|
||||
// UpdateNotificationInList 在 map 中更新通知方式
|
||||
func UpdateNotificationInList(n *model.Notification) {
|
||||
if n.Tag != NotificationIDToTag[n.ID] {
|
||||
// 如果 Tag 不一致,则需要先移除原有的映射关系
|
||||
delete(NotificationList[NotificationIDToTag[n.ID]], n.ID)
|
||||
delete(NotificationIDToTag, n.ID)
|
||||
// 将新的 Tag 中的通知方式添加到 map 中
|
||||
AddNotificationToList(n)
|
||||
} else {
|
||||
// 如果 Tag 一致,则直接更新
|
||||
NotificationList[n.Tag][n.ID] = n
|
||||
}
|
||||
}
|
||||
|
||||
// OnDeleteNotification 在map中删除通知方式
|
||||
|
@ -149,7 +149,7 @@ func (ss *ServiceSentinel) loadMonitorHistory() {
|
||||
var err error
|
||||
ss.monitorsLock.Lock()
|
||||
defer ss.monitorsLock.Unlock()
|
||||
for i := range monitors {
|
||||
for i := 0; i < len(monitors); i++ {
|
||||
// 旧版本可能不存在通知组 为其设置默认组
|
||||
if monitors[i].NotificationTag == "" {
|
||||
monitors[i].NotificationTag = "default"
|
||||
|
Loading…
Reference in New Issue
Block a user