From 6f27bef9fc333eb54b1e4f6deb1dea214f1c4baa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Gronowski?= Date: Tue, 3 Oct 2023 15:26:22 +0200 Subject: [PATCH] daemon/c8d: Use non cancellable context in defers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes leases not being released when operation was cancelled. Signed-off-by: Paweł Gronowski --- daemon/containerd/image_builder.go | 3 ++- daemon/containerd/image_commit.go | 3 ++- daemon/containerd/image_import.go | 3 ++- daemon/containerd/image_push.go | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/daemon/containerd/image_builder.go b/daemon/containerd/image_builder.go index 06417efb01..3ef519d7c5 100644 --- a/daemon/containerd/image_builder.go +++ b/daemon/containerd/image_builder.go @@ -20,6 +20,7 @@ import ( "github.com/docker/docker/api/types/backend" imagetypes "github.com/docker/docker/api/types/image" "github.com/docker/docker/api/types/registry" + "github.com/docker/docker/internal/compatcontext" registrypkg "github.com/docker/docker/registry" // "github.com/docker/docker/api/types/container" @@ -450,7 +451,7 @@ func (i *ImageService) CreateImage(ctx context.Context, config []byte, parent st return nil, err } defer func() { - if err := release(ctx); err != nil { + if err := release(compatcontext.WithoutCancel(ctx)); err != nil { log.G(ctx).WithError(err).Warn("failed to release lease created for create") } }() diff --git a/daemon/containerd/image_commit.go b/daemon/containerd/image_commit.go index 09414b723d..fa7edc2666 100644 --- a/daemon/containerd/image_commit.go +++ b/daemon/containerd/image_commit.go @@ -22,6 +22,7 @@ import ( "github.com/docker/docker/api/types/backend" "github.com/docker/docker/image" imagespec "github.com/docker/docker/image/spec/specs-go/v1" + "github.com/docker/docker/internal/compatcontext" "github.com/docker/docker/pkg/archive" "github.com/opencontainers/go-digest" "github.com/opencontainers/image-spec/identity" @@ -74,7 +75,7 @@ func (i *ImageService) CommitImage(ctx context.Context, cc backend.CommitConfig) return "", fmt.Errorf("failed to create lease for commit: %w", err) } defer func() { - if err := release(ctx); err != nil { + if err := release(compatcontext.WithoutCancel(ctx)); err != nil { log.G(ctx).WithError(err).Warn("failed to release lease created for commit") } }() diff --git a/daemon/containerd/image_import.go b/daemon/containerd/image_import.go index 7c1df931dc..205a091735 100644 --- a/daemon/containerd/image_import.go +++ b/daemon/containerd/image_import.go @@ -21,6 +21,7 @@ import ( "github.com/docker/docker/errdefs" "github.com/docker/docker/image" imagespec "github.com/docker/docker/image/spec/specs-go/v1" + "github.com/docker/docker/internal/compatcontext" "github.com/docker/docker/pkg/archive" "github.com/docker/docker/pkg/pools" "github.com/google/uuid" @@ -49,7 +50,7 @@ func (i *ImageService) ImportImage(ctx context.Context, ref reference.Named, pla return "", errdefs.System(err) } defer func() { - if err := release(ctx); err != nil { + if err := release(compatcontext.WithoutCancel(ctx)); err != nil { logger.WithError(err).Warn("failed to release lease created for import") } }() diff --git a/daemon/containerd/image_push.go b/daemon/containerd/image_push.go index f34fc15eb3..7b925233e3 100644 --- a/daemon/containerd/image_push.go +++ b/daemon/containerd/image_push.go @@ -22,6 +22,7 @@ import ( "github.com/docker/docker/api/types/events" "github.com/docker/docker/api/types/registry" "github.com/docker/docker/errdefs" + "github.com/docker/docker/internal/compatcontext" "github.com/docker/docker/pkg/progress" "github.com/docker/docker/pkg/streamformatter" "github.com/opencontainers/go-digest" @@ -84,7 +85,7 @@ func (i *ImageService) pushRef(ctx context.Context, targetRef reference.Named, m return err } defer func() { - if err := release(leasedCtx); err != nil { + if err := release(compatcontext.WithoutCancel(leasedCtx)); err != nil { log.G(ctx).WithField("image", targetRef).WithError(err).Warn("failed to release lease created for push") } }()