From 5f6d11c49180440fcf81046dd475c99857cdb701 Mon Sep 17 00:00:00 2001 From: Matej Vasek Date: Tue, 14 Jun 2022 00:46:15 +0200 Subject: [PATCH] Fix premature Close() of docker client (#1056) Signed-off-by: Matej Vasek --- s2i/builder.go | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/s2i/builder.go b/s2i/builder.go index 9ab541f5c..940db8987 100644 --- a/s2i/builder.go +++ b/s2i/builder.go @@ -115,7 +115,19 @@ func (b *Builder) Build(ctx context.Context, f fn.Function) (err error) { // Create the S2I builder instance if not overridden if b.impl == nil { - if b.impl, err = newImpl(ctx, cfg); err != nil { + var client dockerClient.CommonAPIClient + client, _, err = docker.NewClient(dockerClient.DefaultDockerHost) + if err != nil { + return + } + defer client.Close() + + if isPodman(ctx, client) { + client = podmanDockerClient{client} + } + + b.impl, _, err = strategies.Strategy(client, cfg, build.Overrides{}) + if err != nil { return } } @@ -157,18 +169,3 @@ func builderImage(f fn.Function) (string, error) { return "", ErrRuntimeNotSupported } - -// new S2I implementation using a docker client wrapped as necessary in the -// case of podman. -func newImpl(ctx context.Context, cfg *api.Config) (impl build.Builder, err error) { - client, _, err := docker.NewClient(dockerClient.DefaultDockerHost) - if err != nil { - return - } - defer client.Close() - if isPodman(ctx, client) { - client = podmanDockerClient{client} - } - impl, _, err = strategies.Strategy(client, cfg, build.Overrides{}) - return -}