cli/command/container: don't leak context

Switch from x/net/context to context made "go vet" see the previously
unseen errors:

> cli/command/container/start.go:57::error: the cancelFun function is
> not used on all paths (possible context leak) (vet)
> cli/command/container/start.go:63::error: this return statement may be
> reached without using the cancelFun var defined on line 57 (vet)

> cli/command/container/run.go:159::error: the cancelFun function is not
> used on all paths (possible context leak) (vet)
> cli/command/container/run.go:164::error: this return statement may be
> reached without using the cancelFun var defined on line 159 (vet)

Do call the cancel function.

Note we might end up calling it twice which is fine as long as I can see
from the Go 1.10 source code.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
Kir Kolyshkin 2018-05-07 14:31:30 -07:00
parent 6f8070deb2
commit 395957155f
2 changed files with 2 additions and 0 deletions

View File

@ -157,6 +157,7 @@ func runContainer(dockerCli command.Cli, opts *runOptions, copts *containerOptio
} }
ctx, cancelFun := context.WithCancel(context.Background()) ctx, cancelFun := context.WithCancel(context.Background())
defer cancelFun()
createResponse, err := createContainer(ctx, dockerCli, containerConfig, &opts.createOptions) createResponse, err := createContainer(ctx, dockerCli, containerConfig, &opts.createOptions)
if err != nil { if err != nil {

View File

@ -55,6 +55,7 @@ func NewStartCommand(dockerCli command.Cli) *cobra.Command {
// nolint: gocyclo // nolint: gocyclo
func runStart(dockerCli command.Cli, opts *startOptions) error { func runStart(dockerCli command.Cli, opts *startOptions) error {
ctx, cancelFun := context.WithCancel(context.Background()) ctx, cancelFun := context.WithCancel(context.Background())
defer cancelFun()
if opts.attach || opts.openStdin { if opts.attach || opts.openStdin {
// We're going to attach to a container. // We're going to attach to a container.