fix: 修复分组管理内存更新消息重复发送问题
This commit is contained in:
@@ -118,7 +118,7 @@ func (a *App) Start() error {
|
|||||||
}
|
}
|
||||||
logrus.Info("System settings initialized in DB.")
|
logrus.Info("System settings initialized in DB.")
|
||||||
|
|
||||||
a.settingsManager.Initialize(a.storage, a.groupManager)
|
a.settingsManager.Initialize(a.storage, a.groupManager, a.leaderService)
|
||||||
|
|
||||||
// 从数据库加载密钥到 Redis
|
// 从数据库加载密钥到 Redis
|
||||||
if err := a.keyPoolProvider.LoadKeysFromDB(); err != nil {
|
if err := a.keyPoolProvider.LoadKeysFromDB(); err != nil {
|
||||||
@@ -131,7 +131,7 @@ func (a *App) Start() error {
|
|||||||
if err := a.leaderService.WaitForInitializationToComplete(); err != nil {
|
if err := a.leaderService.WaitForInitializationToComplete(); err != nil {
|
||||||
return fmt.Errorf("follower failed to start: %w", err)
|
return fmt.Errorf("follower failed to start: %w", err)
|
||||||
}
|
}
|
||||||
a.settingsManager.Initialize(a.storage, a.groupManager)
|
a.settingsManager.Initialize(a.storage, a.groupManager, a.leaderService)
|
||||||
}
|
}
|
||||||
|
|
||||||
a.groupManager.Initialize()
|
a.groupManager.Initialize()
|
||||||
|
@@ -101,8 +101,12 @@ type gm interface {
|
|||||||
Invalidate() error
|
Invalidate() error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type leader interface {
|
||||||
|
IsLeader() bool
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize initializes the SystemSettingsManager with database and store dependencies.
|
// Initialize initializes the SystemSettingsManager with database and store dependencies.
|
||||||
func (sm *SystemSettingsManager) Initialize(store store.Store, gm gm) error {
|
func (sm *SystemSettingsManager) Initialize(store store.Store, gm gm, leader leader) error {
|
||||||
settingsLoader := func() (types.SystemSettings, error) {
|
settingsLoader := func() (types.SystemSettings, error) {
|
||||||
var dbSettings []models.SystemSetting
|
var dbSettings []models.SystemSetting
|
||||||
if err := db.DB.Find(&dbSettings).Error; err != nil {
|
if err := db.DB.Find(&dbSettings).Error; err != nil {
|
||||||
@@ -144,6 +148,9 @@ func (sm *SystemSettingsManager) Initialize(store store.Store, gm gm) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
afterLoader := func(newData types.SystemSettings) {
|
afterLoader := func(newData types.SystemSettings) {
|
||||||
|
if !leader.IsLeader() {
|
||||||
|
return
|
||||||
|
}
|
||||||
if err := gm.Invalidate(); err != nil {
|
if err := gm.Invalidate(); err != nil {
|
||||||
logrus.Debugf("Failed to invalidate group manager cache after settings update: %v", err)
|
logrus.Debugf("Failed to invalidate group manager cache after settings update: %v", err)
|
||||||
}
|
}
|
||||||
|
@@ -47,11 +47,6 @@ func (gm *GroupManager) Initialize() error {
|
|||||||
g := *group
|
g := *group
|
||||||
g.EffectiveConfig = gm.settingsManager.GetEffectiveConfig(g.Config)
|
g.EffectiveConfig = gm.settingsManager.GetEffectiveConfig(g.Config)
|
||||||
groupMap[g.Name] = &g
|
groupMap[g.Name] = &g
|
||||||
logrus.WithFields(logrus.Fields{
|
|
||||||
"group_name": g.Name,
|
|
||||||
"group_config": g.Config,
|
|
||||||
"effective_config": g.EffectiveConfig,
|
|
||||||
}).Debug("Loaded group with effective config")
|
|
||||||
}
|
}
|
||||||
return groupMap, nil
|
return groupMap, nil
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user