From 7f364c777acfc1a0c8c3c62d9c3ad001fb1ea6df Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Tue, 16 Nov 2021 13:08:22 -0700 Subject: core: Load config at interval instead of just once --- caddy.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'caddy.go') diff --git a/caddy.go b/caddy.go index a7e99c1..bee4274 100644 --- a/caddy.go +++ b/caddy.go @@ -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 { -- cgit v1.2.3