Browse code

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>

Paweł Gronowski authored on 2023/10/03 22:26:22
Showing 4 changed files
... ...
@@ -20,6 +20,7 @@ import (
20 20
 	"github.com/docker/docker/api/types/backend"
21 21
 	imagetypes "github.com/docker/docker/api/types/image"
22 22
 	"github.com/docker/docker/api/types/registry"
23
+	"github.com/docker/docker/internal/compatcontext"
23 24
 	registrypkg "github.com/docker/docker/registry"
24 25
 
25 26
 	// "github.com/docker/docker/api/types/container"
... ...
@@ -450,7 +451,7 @@ func (i *ImageService) CreateImage(ctx context.Context, config []byte, parent st
450 450
 		return nil, err
451 451
 	}
452 452
 	defer func() {
453
-		if err := release(ctx); err != nil {
453
+		if err := release(compatcontext.WithoutCancel(ctx)); err != nil {
454 454
 			log.G(ctx).WithError(err).Warn("failed to release lease created for create")
455 455
 		}
456 456
 	}()
... ...
@@ -22,6 +22,7 @@ import (
22 22
 	"github.com/docker/docker/api/types/backend"
23 23
 	"github.com/docker/docker/image"
24 24
 	imagespec "github.com/docker/docker/image/spec/specs-go/v1"
25
+	"github.com/docker/docker/internal/compatcontext"
25 26
 	"github.com/docker/docker/pkg/archive"
26 27
 	"github.com/opencontainers/go-digest"
27 28
 	"github.com/opencontainers/image-spec/identity"
... ...
@@ -74,7 +75,7 @@ func (i *ImageService) CommitImage(ctx context.Context, cc backend.CommitConfig)
74 74
 		return "", fmt.Errorf("failed to create lease for commit: %w", err)
75 75
 	}
76 76
 	defer func() {
77
-		if err := release(ctx); err != nil {
77
+		if err := release(compatcontext.WithoutCancel(ctx)); err != nil {
78 78
 			log.G(ctx).WithError(err).Warn("failed to release lease created for commit")
79 79
 		}
80 80
 	}()
... ...
@@ -21,6 +21,7 @@ import (
21 21
 	"github.com/docker/docker/errdefs"
22 22
 	"github.com/docker/docker/image"
23 23
 	imagespec "github.com/docker/docker/image/spec/specs-go/v1"
24
+	"github.com/docker/docker/internal/compatcontext"
24 25
 	"github.com/docker/docker/pkg/archive"
25 26
 	"github.com/docker/docker/pkg/pools"
26 27
 	"github.com/google/uuid"
... ...
@@ -49,7 +50,7 @@ func (i *ImageService) ImportImage(ctx context.Context, ref reference.Named, pla
49 49
 		return "", errdefs.System(err)
50 50
 	}
51 51
 	defer func() {
52
-		if err := release(ctx); err != nil {
52
+		if err := release(compatcontext.WithoutCancel(ctx)); err != nil {
53 53
 			logger.WithError(err).Warn("failed to release lease created for import")
54 54
 		}
55 55
 	}()
... ...
@@ -22,6 +22,7 @@ import (
22 22
 	"github.com/docker/docker/api/types/events"
23 23
 	"github.com/docker/docker/api/types/registry"
24 24
 	"github.com/docker/docker/errdefs"
25
+	"github.com/docker/docker/internal/compatcontext"
25 26
 	"github.com/docker/docker/pkg/progress"
26 27
 	"github.com/docker/docker/pkg/streamformatter"
27 28
 	"github.com/opencontainers/go-digest"
... ...
@@ -84,7 +85,7 @@ func (i *ImageService) pushRef(ctx context.Context, targetRef reference.Named, m
84 84
 		return err
85 85
 	}
86 86
 	defer func() {
87
-		if err := release(leasedCtx); err != nil {
87
+		if err := release(compatcontext.WithoutCancel(leasedCtx)); err != nil {
88 88
 			log.G(ctx).WithField("image", targetRef).WithError(err).Warn("failed to release lease created for push")
89 89
 		}
90 90
 	}()