From a0a81240ce8335f97f82d3547473794620e087ed Mon Sep 17 00:00:00 2001 From: yusing Date: Wed, 1 Jan 2025 14:25:44 +0800 Subject: [PATCH] fix idlewatcher nil dereference --- internal/docker/idlewatcher/watcher.go | 8 +++----- internal/task/utils.go | 8 +++++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/internal/docker/idlewatcher/watcher.go b/internal/docker/idlewatcher/watcher.go index aac0eee..a60ba79 100644 --- a/internal/docker/idlewatcher/watcher.go +++ b/internal/docker/idlewatcher/watcher.go @@ -209,7 +209,7 @@ func (w *Watcher) resetIdleTimer() { w.ticker.Reset(w.IdleTimeout) } -func (w *Watcher) getEventCh(dockerWatcher watcher.DockerWatcher) (eventTask *task.Task, eventCh <-chan events.Event, errCh <-chan E.Error) { +func (w *Watcher) getEventCh(dockerWatcher watcher.DockerWatcher) (eventCh <-chan events.Event, errCh <-chan E.Error) { eventCh, errCh = dockerWatcher.EventsWithOptions(w.Task().Context(), watcher.DockerListOptions{ Filters: watcher.NewDockerFilter( watcher.DockerFilterContainer, @@ -239,8 +239,7 @@ func (w *Watcher) getEventCh(dockerWatcher watcher.DockerWatcher) (eventTask *ta // errors occurred on docker client, or route provider died (mainly caused by config reload). func (w *Watcher) watchUntilDestroy() (returnCause error) { dockerWatcher := watcher.NewDockerWatcherWithClient(w.client) - eventTask, dockerEventCh, dockerEventErrCh := w.getEventCh(dockerWatcher) - defer eventTask.Finish("stopped") + dockerEventCh, dockerEventErrCh := w.getEventCh(dockerWatcher) for { select { @@ -279,8 +278,7 @@ func (w *Watcher) watchUntilDestroy() (returnCause error) { w.Debug().Msgf("id changed %s -> %s", w.ContainerID, e.ActorID) w.ContainerID = e.ActorID // recreate event stream - eventTask.Finish("recreate event stream") - eventTask, dockerEventCh, dockerEventErrCh = w.getEventCh(dockerWatcher) + dockerEventCh, dockerEventErrCh = w.getEventCh(dockerWatcher) } case <-w.ticker.C: w.ticker.Stop() diff --git a/internal/task/utils.go b/internal/task/utils.go index 79c8fce..2fa0545 100644 --- a/internal/task/utils.go +++ b/internal/task/utils.go @@ -16,9 +16,11 @@ var ErrProgramExiting = errors.New("program exiting") var logger = logging.With().Str("module", "task").Logger() -var root = newRoot() -var allTasks = F.NewSet[*Task]() -var allTasksWg sync.WaitGroup +var ( + root = newRoot() + allTasks = F.NewSet[*Task]() + allTasksWg sync.WaitGroup +) func testCleanup() { root = newRoot()