MM-14145: The config store Set will now Save automatically (#10377)

* MM-14145: The config store Set will now Save automatically

When UpdateConfig (and configStore.Set) is called in admin.go and
config.go, commonStore.Set now takes a store-specific persist function.
It uses that persist function to save the configuration automatically.

Removed: Now callers do not have to call configStore.Save or
app.PersistConfig, and those functions have been removed.

Possible downside: this means a "failed to persist config" error can now
be thrown during a app.UpdateConfig or commonStore.Set call. But
considering application code never really sets a config without saving
it (except in the test cases, which were testing that -- see below), it
seems fine to group these responsibilities.

Also removed: tests for 'set without save'. Since that can not happen
anymore, the tests are not needed.

* Removed Save completely, cleaned up formatting, joined save test with
set tests.

* fixed shadowed variable error
Этот коммит содержится в:
Christopher Poile
2019-02-28 10:51:42 -05:00
коммит произвёл Jesse Hallam
родитель 06261d32ba
Коммит 8bd182c38f
11 изменённых файлов: 39 добавлений и 107 удалений

Просмотреть файл

@@ -111,9 +111,10 @@ func parseDSN(dsn string) (string, string, error) {
return scheme, dsn, nil
}
// Set replaces the current configuration in its entirety, without updating the backing store.
// Set replaces the current configuration in its entirety and updates the backing store.
func (ds *DatabaseStore) Set(newCfg *model.Config) (*model.Config, error) {
return ds.commonStore.set(newCfg, nil)
return ds.commonStore.set(newCfg, nil, ds.persist)
}
// persist writes the configuration to the configured database.
@@ -192,14 +193,6 @@ func (ds *DatabaseStore) Load() (err error) {
return ds.commonStore.load(ioutil.NopCloser(bytes.NewReader(configurationData)), needsSave, ds.persist)
}
// Save writes the current configuration to the backing store.
func (ds *DatabaseStore) Save() error {
ds.configLock.RLock()
defer ds.configLock.RUnlock()
return ds.persist(ds.config)
}
// String returns the path to the database backing the config, masking the password.
func (ds *DatabaseStore) String() string {
u, _ := url.Parse(ds.originalDsn)