Fixes leases not being released when operation was cancelled.
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
| ... | ... |
@@ -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 |
}() |