From 2b4a70a550f17549143bbae7e176f7db728b9281 Mon Sep 17 00:00:00 2001 From: yusing Date: Thu, 1 May 2025 06:48:38 +0800 Subject: [PATCH] fix(docker): fixed retry mechanism --- internal/watcher/docker_watcher.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/internal/watcher/docker_watcher.go b/internal/watcher/docker_watcher.go index 4cae2186..1f885877 100644 --- a/internal/watcher/docker_watcher.go +++ b/internal/watcher/docker_watcher.go @@ -136,12 +136,19 @@ func (w *DockerWatcher) EventsWithOptions(ctx context.Context, options DockerLis err = nil // trigger reload (clear routes) eventCh <- reloadTrigger - for !w.checkConnection(ctx) { + + retry := time.NewTicker(dockerWatcherRetryInterval) + defer retry.Stop() + ok := false + for !ok { select { case <-ctx.Done(): return - case <-time.After(dockerWatcherRetryInterval): - continue + case <-retry.C: + if w.checkConnection(ctx) { + ok = true + break + } } } // connection successful, trigger reload (reload routes)