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 6f27bef9fc)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Paweł Gronowski 2023-10-03 15:26:22 +02:00 committed by Sebastiaan van Stijn
parent a9e20aeaed
commit 2783345d3a
No known key found for this signature in database
GPG key ID: 76698F39D527CE8C
4 changed files with 8 additions and 4 deletions

View file

@ -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")
}
}()

View file

@ -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")
}
}()

View file

@ -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")
}
}()

View file

@ -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")
}
}()