diff --git a/internal/app/app.go b/internal/app/app.go index ed0a34c..627ef8d 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -118,7 +118,7 @@ func (a *App) Start() error { } logrus.Info("System settings initialized in DB.") - a.settingsManager.Initialize(a.storage, a.groupManager) + a.settingsManager.Initialize(a.storage, a.groupManager, a.leaderService) // 从数据库加载密钥到 Redis if err := a.keyPoolProvider.LoadKeysFromDB(); err != nil { @@ -131,7 +131,7 @@ func (a *App) Start() error { if err := a.leaderService.WaitForInitializationToComplete(); err != nil { 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() diff --git a/internal/config/system_settings.go b/internal/config/system_settings.go index dffad5e..62e5209 100644 --- a/internal/config/system_settings.go +++ b/internal/config/system_settings.go @@ -101,8 +101,12 @@ type gm interface { Invalidate() error } +type leader interface { + IsLeader() bool +} + // 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) { var dbSettings []models.SystemSetting 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) { + if !leader.IsLeader() { + return + } if err := gm.Invalidate(); err != nil { logrus.Debugf("Failed to invalidate group manager cache after settings update: %v", err) } diff --git a/internal/services/group_manager.go b/internal/services/group_manager.go index cf0de8d..a3d9ea3 100644 --- a/internal/services/group_manager.go +++ b/internal/services/group_manager.go @@ -47,11 +47,6 @@ func (gm *GroupManager) Initialize() error { g := *group g.EffectiveConfig = gm.settingsManager.GetEffectiveConfig(g.Config) 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 }