mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 20:52:33 +02:00
fixed possible resource leak
This commit is contained in:
parent
a11ce46028
commit
d39b68bfd8
1 changed files with 10 additions and 6 deletions
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue