core: Load config at interval instead of just once

This commit is contained in:
Matthew Holt 2021-11-16 13:08:22 -07:00
parent b47af6ef04
commit 7f364c777a
No known key found for this signature in database
GPG Key ID: 2A349DD577D586A5
1 changed files with 12 additions and 9 deletions

View File

@ -493,17 +493,20 @@ func finishSettingUp(ctx Context, cfg *Config) error {
}
if cfg.Admin.Config.LoadInterval > 0 {
go func() {
select {
// if LoadInterval is positive, will wait for the interval and then run with new config
case <-time.After(time.Duration(cfg.Admin.Config.LoadInterval)):
loadedConfig, err := val.(ConfigLoader).LoadConfig(ctx)
if err != nil {
Log().Error("loading dynamic config failed", zap.Error(err))
for {
select {
// if LoadInterval is positive, will wait for the interval and then run with new config
case <-time.After(time.Duration(cfg.Admin.Config.LoadInterval)):
loadedConfig, err := val.(ConfigLoader).LoadConfig(ctx)
if err != nil {
Log().Error("loading dynamic config failed", zap.Error(err))
return
}
runLoadedConfig(loadedConfig)
case <-ctx.Done():
Log().Info("stopping config load interval")
return
}
runLoadedConfig(loadedConfig)
case <-ctx.Done():
return
}
}()
} else {