Kaynağa Gözat

daemon/c8d: Use non cancellable context in defers

Fixes leases not being released when operation was cancelled.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
(cherry picked from commit 6f27bef9fc333eb54b1e4f6deb1dea214f1c4baa)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Paweł Gronowski 1 yıl önce
ebeveyn
işleme
2783345d3a

+ 2 - 1
daemon/containerd/image_builder.go

@@ -18,6 +18,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"
@@ -477,7 +478,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 {
 			logrus.WithError(err).Warn("failed to release lease created for create")
 		}
 	}()

+ 2 - 1
daemon/containerd/image_commit.go

@@ -20,6 +20,7 @@ import (
 	"github.com/containerd/containerd/snapshots"
 	"github.com/docker/docker/api/types/backend"
 	"github.com/docker/docker/image"
+	"github.com/docker/docker/internal/compatcontext"
 	"github.com/docker/docker/pkg/archive"
 	"github.com/opencontainers/go-digest"
 	"github.com/opencontainers/image-spec/identity"
@@ -73,7 +74,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 {
 			logrus.WithError(err).Warn("failed to release lease created for commit")
 		}
 	}()

+ 2 - 1
daemon/containerd/image_import.go

@@ -18,6 +18,7 @@ import (
 	"github.com/docker/docker/builder/dockerfile"
 	"github.com/docker/docker/errdefs"
 	"github.com/docker/docker/image"
+	"github.com/docker/docker/internal/compatcontext"
 	"github.com/docker/docker/pkg/archive"
 	"github.com/docker/docker/pkg/pools"
 	"github.com/google/uuid"
@@ -47,7 +48,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")
 		}
 	}()

+ 2 - 1
daemon/containerd/image_push.go

@@ -17,6 +17,7 @@ import (
 	"github.com/docker/distribution/reference"
 	"github.com/docker/docker/api/types/registry"
 	"github.com/docker/docker/errdefs"
+	"github.com/docker/docker/internal/compatcontext"
 	"github.com/docker/docker/pkg/streamformatter"
 	"github.com/opencontainers/go-digest"
 	ocispec "github.com/opencontainers/image-spec/specs-go/v1"
@@ -46,7 +47,7 @@ func (i *ImageService) PushImage(ctx context.Context, targetRef reference.Named,
 		return err
 	}
 	defer func() {
-		if err := release(leasedCtx); err != nil {
+		if err := release(compatcontext.WithoutCancel(leasedCtx)); err != nil {
 			logrus.WithField("image", targetRef).WithError(err).Warn("failed to release lease created for push")
 		}
 	}()