diff options
author | Chris <ccbrown112@gmail.com> | 2018-01-11 15:23:41 -0600 |
---|---|---|
committer | Corey Hulen <corey@hulen.com> | 2018-01-11 13:23:41 -0800 |
commit | 1d9efd0e39a9663bb2fbf52b3353fe21ac3b6954 (patch) | |
tree | 5518bf9683e2fcbcb6b4e0acd3643a3146574ec4 /app/app.go | |
parent | 6990d052d5e95295e729aae28a0d30bfdcb98573 (diff) | |
download | chat-1d9efd0e39a9663bb2fbf52b3353fe21ac3b6954.tar.gz chat-1d9efd0e39a9663bb2fbf52b3353fe21ac3b6954.tar.bz2 chat-1d9efd0e39a9663bb2fbf52b3353fe21ac3b6954.zip |
Remove global config watcher (#8080)
* remove global config watcher
* keep config watcher disabled for tests
* compile fix
* fix resource leak
Diffstat (limited to 'app/app.go')
-rw-r--r-- | app/app.go | 62 |
1 files changed, 14 insertions, 48 deletions
diff --git a/app/app.go b/app/app.go index 8aa894b9b..561942019 100644 --- a/app/app.go +++ b/app/app.go @@ -4,19 +4,16 @@ package app import ( - "crypto/md5" - "encoding/json" - "fmt" "html/template" "net" "net/http" - "runtime/debug" "strings" "sync" "sync/atomic" l4g "github.com/alecthomas/log4go" "github.com/gorilla/mux" + "github.com/pkg/errors" "github.com/mattermost/mattermost-server/einterfaces" ejobs "github.com/mattermost/mattermost-server/einterfaces/jobs" @@ -65,6 +62,8 @@ type App struct { roles map[string]*model.Role configListenerId string licenseListenerId string + disableConfigWatch bool + configWatcher *utils.ConfigWatcher pluginCommands []*PluginCommand pluginCommandsLock sync.RWMutex @@ -78,7 +77,7 @@ var appCount = 0 // New creates a new App. You must call Shutdown when you're done with it. // XXX: For now, only one at a time is allowed as some resources are still shared. -func New(options ...Option) *App { +func New(options ...Option) (*App, error) { appCount++ if appCount > 1 { panic("Only one App should exist at a time. Did you forget to call Shutdown()?") @@ -99,11 +98,16 @@ func New(options ...Option) *App { } if utils.T == nil { - utils.TranslationsPreInit() + if err := utils.TranslationsPreInit(); err != nil { + return nil, errors.Wrapf(err, "unable to load Mattermost translation files") + } } model.AppErrorInit(utils.T) utils.LoadGlobalConfig(app.configFile) - utils.InitTranslations(utils.Cfg.LocalizationSettings) + app.EnableConfigWatch() + if err := utils.InitTranslations(utils.Cfg.LocalizationSettings); err != nil { + return nil, errors.Wrapf(err, "unable to load Mattermost translation files") + } app.configListenerId = utils.AddConfigListener(func(_, _ *model.Config) { app.configOrLicenseListener() @@ -142,7 +146,7 @@ func New(options ...Option) *App { handlers: make(map[string]webSocketHandler), } - return app + return app, nil } func (a *App) configOrLicenseListener() { @@ -171,6 +175,8 @@ func (a *App) Shutdown() { utils.RemoveConfigListener(a.configListenerId) utils.RemoveLicenseListener(a.licenseListenerId) l4g.Info(utils.T("api.server.stop_server.stopped.info")) + + a.DisableConfigWatch() } var accountMigrationInterface func(*App) einterfaces.AccountMigrationInterface @@ -341,46 +347,6 @@ func (a *App) initJobs() { } } -func (a *App) Config() *model.Config { - return utils.Cfg -} - -func (a *App) UpdateConfig(f func(*model.Config)) { - old := utils.Cfg.Clone() - f(utils.Cfg) - utils.InvokeGlobalConfigListeners(old, utils.Cfg) -} - -func (a *App) PersistConfig() { - utils.SaveConfig(a.ConfigFileName(), a.Config()) -} - -func (a *App) ReloadConfig() { - debug.FreeOSMemory() - utils.LoadGlobalConfig(a.ConfigFileName()) - - // start/restart email batching job if necessary - a.InitEmailBatching() -} - -func (a *App) ConfigFileName() string { - return utils.CfgFileName -} - -func (a *App) ClientConfig() map[string]string { - return a.clientConfig -} - -func (a *App) ClientConfigHash() string { - return a.clientConfigHash -} - -func (a *App) regenerateClientConfig() { - a.clientConfig = utils.GenerateClientConfig(a.Config(), a.DiagnosticId()) - clientConfigJSON, _ := json.Marshal(a.clientConfig) - a.clientConfigHash = fmt.Sprintf("%x", md5.Sum(clientConfigJSON)) -} - func (a *App) DiagnosticId() string { return a.diagnosticId } |