From 6c159d120b32c586218e7a8cd45120e3f14a94e1 Mon Sep 17 00:00:00 2001 From: "gcp-cherry-pick-bot[bot]" <98988430+gcp-cherry-pick-bot[bot]@users.noreply.github.com> Date: Wed, 31 Jul 2024 14:59:14 +0200 Subject: [PATCH] outposts: ensure minimum refresh interval (cherry-pick #10701) (#10702) outposts: ensure minimum refresh interval (#10701) Signed-off-by: Jens Langhammer Co-authored-by: Jens L. --- internal/outpost/ak/api_ws.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/internal/outpost/ak/api_ws.go b/internal/outpost/ak/api_ws.go index 4b2f1f8c4f..210b7e5335 100644 --- a/internal/outpost/ak/api_ws.go +++ b/internal/outpost/ak/api_ws.go @@ -183,7 +183,19 @@ func (ac *APIController) startWSHealth() { func (ac *APIController) startIntervalUpdater() { logger := ac.logger.WithField("loop", "interval-updater") - ticker := time.NewTicker(time.Duration(ac.Outpost.RefreshIntervalS) * time.Second) + getInterval := func() time.Duration { + // Ensure timer interval is not negative or 0 + // for 0 we assume migration or unconfigured, so default to 5 minutes + if ac.Outpost.RefreshIntervalS <= 0 { + return 5 * time.Minute + } + // Clamp interval to be at least 30 seconds + if ac.Outpost.RefreshIntervalS < 30 { + return 30 * time.Second + } + return time.Duration(ac.Outpost.RefreshIntervalS) * time.Second + } + ticker := time.NewTicker(getInterval()) for ; true; <-ticker.C { logger.Debug("Running interval update") err := ac.OnRefresh() @@ -198,7 +210,7 @@ func (ac *APIController) startIntervalUpdater() { "build": constants.BUILD("tagged"), }).SetToCurrentTime() } - ticker.Reset(time.Duration(ac.Outpost.RefreshIntervalS) * time.Second) + ticker.Reset(getInterval()) } }