diff options
Diffstat (limited to 'jobs')
-rw-r--r-- | jobs/schedulers.go | 3 | ||||
-rw-r--r-- | jobs/server.go | 32 | ||||
-rw-r--r-- | jobs/workers.go | 33 |
3 files changed, 42 insertions, 26 deletions
diff --git a/jobs/schedulers.go b/jobs/schedulers.go index bec53a49b..839cbbae8 100644 --- a/jobs/schedulers.go +++ b/jobs/schedulers.go @@ -10,7 +10,6 @@ import ( l4g "github.com/alecthomas/log4go" "github.com/mattermost/mattermost-server/model" - "github.com/mattermost/mattermost-server/utils" ) type Schedulers struct { @@ -56,7 +55,7 @@ func (srv *JobServer) InitSchedulers() *Schedulers { } func (schedulers *Schedulers) Start() *Schedulers { - schedulers.listenerId = utils.AddConfigListener(schedulers.handleConfigChange) + schedulers.listenerId = schedulers.jobs.ConfigService.AddConfigListener(schedulers.handleConfigChange) go func() { schedulers.startOnce.Do(func() { diff --git a/jobs/server.go b/jobs/server.go index 777b02a26..9a59fad3f 100644 --- a/jobs/server.go +++ b/jobs/server.go @@ -12,11 +12,25 @@ import ( "github.com/mattermost/mattermost-server/utils" ) +type ConfigService interface { + Config() *model.Config + AddConfigListener(func(old, current *model.Config)) string + RemoveConfigListener(string) +} + +type StaticConfigService struct { + Cfg *model.Config +} + +func (s StaticConfigService) Config() *model.Config { return s.Cfg } +func (StaticConfigService) AddConfigListener(func(old, current *model.Config)) string { return "" } +func (StaticConfigService) RemoveConfigListener(string) {} + type JobServer struct { - Config model.ConfigFunc - Store store.Store - Workers *Workers - Schedulers *Schedulers + ConfigService ConfigService + Store store.Store + Workers *Workers + Schedulers *Schedulers DataRetentionJob ejobs.DataRetentionJobInterface MessageExportJob ejobs.MessageExportJobInterface @@ -25,13 +39,17 @@ type JobServer struct { LdapSync ejobs.LdapSyncInterface } -func NewJobServer(config model.ConfigFunc, store store.Store) *JobServer { +func NewJobServer(configService ConfigService, store store.Store) *JobServer { return &JobServer{ - Config: config, - Store: store, + ConfigService: configService, + Store: store, } } +func (srv *JobServer) Config() *model.Config { + return srv.ConfigService.Config() +} + func (srv *JobServer) LoadLicense() { licenseId := "" if result := <-srv.Store.System().Get(); result.Err == nil { diff --git a/jobs/workers.go b/jobs/workers.go index 3abd7131c..ca34855e5 100644 --- a/jobs/workers.go +++ b/jobs/workers.go @@ -8,13 +8,12 @@ import ( l4g "github.com/alecthomas/log4go" "github.com/mattermost/mattermost-server/model" - "github.com/mattermost/mattermost-server/utils" ) type Workers struct { - startOnce sync.Once - Config model.ConfigFunc - Watcher *Watcher + startOnce sync.Once + ConfigService ConfigService + Watcher *Watcher DataRetention model.Worker MessageExport model.Worker @@ -27,7 +26,7 @@ type Workers struct { func (srv *JobServer) InitWorkers() *Workers { workers := &Workers{ - Config: srv.Config, + ConfigService: srv.ConfigService, } workers.Watcher = srv.MakeWatcher(workers, DEFAULT_WATCHER_POLLING_INTERVAL) @@ -58,30 +57,30 @@ func (workers *Workers) Start() *Workers { l4g.Info("Starting workers") workers.startOnce.Do(func() { - if workers.DataRetention != nil && (*workers.Config().DataRetentionSettings.EnableMessageDeletion || *workers.Config().DataRetentionSettings.EnableFileDeletion) { + if workers.DataRetention != nil && (*workers.ConfigService.Config().DataRetentionSettings.EnableMessageDeletion || *workers.ConfigService.Config().DataRetentionSettings.EnableFileDeletion) { go workers.DataRetention.Run() } - if workers.MessageExport != nil && *workers.Config().MessageExportSettings.EnableExport { + if workers.MessageExport != nil && *workers.ConfigService.Config().MessageExportSettings.EnableExport { go workers.MessageExport.Run() } - if workers.ElasticsearchIndexing != nil && *workers.Config().ElasticsearchSettings.EnableIndexing { + if workers.ElasticsearchIndexing != nil && *workers.ConfigService.Config().ElasticsearchSettings.EnableIndexing { go workers.ElasticsearchIndexing.Run() } - if workers.ElasticsearchAggregation != nil && *workers.Config().ElasticsearchSettings.EnableIndexing { + if workers.ElasticsearchAggregation != nil && *workers.ConfigService.Config().ElasticsearchSettings.EnableIndexing { go workers.ElasticsearchAggregation.Run() } - if workers.LdapSync != nil && *workers.Config().LdapSettings.EnableSync { + if workers.LdapSync != nil && *workers.ConfigService.Config().LdapSettings.EnableSync { go workers.LdapSync.Run() } go workers.Watcher.Start() }) - workers.listenerId = utils.AddConfigListener(workers.handleConfigChange) + workers.listenerId = workers.ConfigService.AddConfigListener(workers.handleConfigChange) return workers } @@ -129,27 +128,27 @@ func (workers *Workers) handleConfigChange(oldConfig *model.Config, newConfig *m } func (workers *Workers) Stop() *Workers { - utils.RemoveConfigListener(workers.listenerId) + workers.ConfigService.RemoveConfigListener(workers.listenerId) workers.Watcher.Stop() - if workers.DataRetention != nil && (*workers.Config().DataRetentionSettings.EnableMessageDeletion || *workers.Config().DataRetentionSettings.EnableFileDeletion) { + if workers.DataRetention != nil && (*workers.ConfigService.Config().DataRetentionSettings.EnableMessageDeletion || *workers.ConfigService.Config().DataRetentionSettings.EnableFileDeletion) { workers.DataRetention.Stop() } - if workers.MessageExport != nil && *workers.Config().MessageExportSettings.EnableExport { + if workers.MessageExport != nil && *workers.ConfigService.Config().MessageExportSettings.EnableExport { workers.MessageExport.Stop() } - if workers.ElasticsearchIndexing != nil && *workers.Config().ElasticsearchSettings.EnableIndexing { + if workers.ElasticsearchIndexing != nil && *workers.ConfigService.Config().ElasticsearchSettings.EnableIndexing { workers.ElasticsearchIndexing.Stop() } - if workers.ElasticsearchAggregation != nil && *workers.Config().ElasticsearchSettings.EnableIndexing { + if workers.ElasticsearchAggregation != nil && *workers.ConfigService.Config().ElasticsearchSettings.EnableIndexing { workers.ElasticsearchAggregation.Stop() } - if workers.LdapSync != nil && *workers.Config().LdapSettings.EnableSync { + if workers.LdapSync != nil && *workers.ConfigService.Config().LdapSettings.EnableSync { workers.LdapSync.Stop() } |