mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-19 17:50:12 +00:00
fix: 修复空周期流量规则列表导致流量历史清理失效 (#1226)
* fix: prevent unbounded transfer history growth * fix: preserve transfer history on alert load errors * test: close transfer cleanup database --------- Co-authored-by: naiba <hi@nai.ba>
This commit is contained in:
@@ -160,7 +160,10 @@ func CleanMonitorHistory() {
|
||||
specialServerKeep := make(map[uint64]time.Time)
|
||||
var specialServerIDs []uint64
|
||||
var alerts []model.AlertRule
|
||||
DB.Find(&alerts)
|
||||
if err := DB.Find(&alerts).Error; err != nil {
|
||||
log.Printf("NEZHA>> Failed to load alert rules while cleaning transfer history: %v", err)
|
||||
return
|
||||
}
|
||||
for _, alert := range alerts {
|
||||
for _, rule := range alert.Rules {
|
||||
// 是不是流量记录规则
|
||||
@@ -188,6 +191,14 @@ func CleanMonitorHistory() {
|
||||
for id, couldRemove := range specialServerKeep {
|
||||
DB.Unscoped().Delete(&model.Transfer{}, "server_id = ? AND datetime(`created_at`) < datetime(?)", id, couldRemove)
|
||||
}
|
||||
if len(specialServerIDs) == 0 {
|
||||
if allServerKeep.IsZero() {
|
||||
DB.Unscoped().Session(&gorm.Session{AllowGlobalUpdate: true}).Delete(&model.Transfer{})
|
||||
} else {
|
||||
DB.Unscoped().Delete(&model.Transfer{}, "datetime(`created_at`) < datetime(?)", allServerKeep)
|
||||
}
|
||||
return
|
||||
}
|
||||
if allServerKeep.IsZero() {
|
||||
DB.Unscoped().Delete(&model.Transfer{}, "server_id NOT IN (?)", specialServerIDs)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user