fix: 修复分组管理内存更新消息重复发送问题
This commit is contained in:
@@ -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()
|
||||
|
@@ -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)
|
||||
}
|
||||
|
@@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user