fixed possible resource leak

This commit is contained in:
yusing 2024-09-22 04:11:02 +08:00
parent a11ce46028
commit d39b68bfd8

View file

@ -33,6 +33,8 @@ var (
DockerFilterUnpause = filters.Arg("event", string(docker_events.ActionUnPause)) DockerFilterUnpause = filters.Arg("event", string(docker_events.ActionUnPause))
NewDockerFilter = filters.NewArgs NewDockerFilter = filters.NewArgs
dockerWatcherRetryInterval = 3 * time.Second
) )
func DockerrFilterContainerName(name string) filters.KeyValuePair { func DockerrFilterContainerName(name string) filters.KeyValuePair {
@ -56,6 +58,8 @@ func (w DockerWatcher) EventsWithOptions(ctx context.Context, options DockerList
errCh := make(chan E.NestedError) errCh := make(chan E.NestedError)
started := make(chan struct{}) started := make(chan struct{})
eventsCtx, eventsCancel := context.WithCancel(ctx)
go func() { go func() {
defer close(eventCh) defer close(eventCh)
defer close(errCh) defer close(errCh)
@ -80,12 +84,12 @@ func (w DockerWatcher) EventsWithOptions(ctx context.Context, options DockerList
case <-ctx.Done(): case <-ctx.Done():
return return
default: default:
time.Sleep(3 * time.Second) time.Sleep(dockerWatcherRetryInterval)
} }
} }
} }
cEventCh, cErrCh := w.client.Events(ctx, options) cEventCh, cErrCh := w.client.Events(eventsCtx, options)
started <- struct{}{} started <- struct{}{}
for { for {
@ -118,10 +122,10 @@ func (w DockerWatcher) EventsWithOptions(ctx context.Context, options DockerList
case <-ctx.Done(): case <-ctx.Done():
return return
default: default:
if D.IsErrConnectionFailed(err) { eventsCancel()
time.Sleep(100 * time.Millisecond) time.Sleep(dockerWatcherRetryInterval)
cEventCh, cErrCh = w.client.Events(ctx, options) eventsCtx, eventsCancel = context.WithCancel(ctx)
} cEventCh, cErrCh = w.client.Events(ctx, options)
} }
} }
} }