Log a warning if we encounter an error when releasing leases. While it
may not have direct consequences, failing to release the lease should be
unexpected, so let's make them visible.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
| ... | ... |
@@ -460,11 +460,15 @@ func (i *ImageService) CreateImage(ctx context.Context, config []byte, parent st |
| 460 | 460 |
|
| 461 | 461 |
// necessary to prevent the contents from being GC'd |
| 462 | 462 |
// between writing them here and creating an image |
| 463 |
- ctx, done, err := i.client.WithLease(ctx, leases.WithRandomID(), leases.WithExpiration(1*time.Hour)) |
|
| 463 |
+ ctx, release, err := i.client.WithLease(ctx, leases.WithRandomID(), leases.WithExpiration(1*time.Hour)) |
|
| 464 | 464 |
if err != nil {
|
| 465 | 465 |
return nil, err |
| 466 | 466 |
} |
| 467 |
- defer done(ctx) |
|
| 467 |
+ defer func() {
|
|
| 468 |
+ if err := release(ctx); err != nil {
|
|
| 469 |
+ log.G(ctx).WithError(err).Warn("failed to release lease created for create")
|
|
| 470 |
+ } |
|
| 471 |
+ }() |
|
| 468 | 472 |
|
| 469 | 473 |
commitManifestDesc, err := writeContentsForImage(ctx, i.snapshotter, i.client.ContentStore(), ociImgToCreate, layers) |
| 470 | 474 |
if err != nil {
|
| ... | ... |
@@ -68,11 +68,15 @@ func (i *ImageService) CommitImage(ctx context.Context, cc backend.CommitConfig) |
| 68 | 68 |
) |
| 69 | 69 |
|
| 70 | 70 |
// Don't gc me and clean the dirty data after 1 hour! |
| 71 |
- ctx, done, err := i.client.WithLease(ctx, leases.WithRandomID(), leases.WithExpiration(1*time.Hour)) |
|
| 71 |
+ ctx, release, err := i.client.WithLease(ctx, leases.WithRandomID(), leases.WithExpiration(1*time.Hour)) |
|
| 72 | 72 |
if err != nil {
|
| 73 | 73 |
return "", fmt.Errorf("failed to create lease for commit: %w", err)
|
| 74 | 74 |
} |
| 75 |
- defer done(ctx) |
|
| 75 |
+ defer func() {
|
|
| 76 |
+ if err := release(ctx); err != nil {
|
|
| 77 |
+ log.G(ctx).WithError(err).Warn("failed to release lease created for commit")
|
|
| 78 |
+ } |
|
| 79 |
+ }() |
|
| 76 | 80 |
|
| 77 | 81 |
diffLayerDesc, diffID, err := createDiff(ctx, cc.ContainerID, sn, cs, differ) |
| 78 | 82 |
if err != nil {
|
| ... | ... |
@@ -46,7 +46,11 @@ func (i *ImageService) ImportImage(ctx context.Context, ref reference.Named, pla |
| 46 | 46 |
if err != nil {
|
| 47 | 47 |
return "", errdefs.System(err) |
| 48 | 48 |
} |
| 49 |
- defer release(ctx) |
|
| 49 |
+ defer func() {
|
|
| 50 |
+ if err := release(ctx); err != nil {
|
|
| 51 |
+ logger.WithError(err).Warn("failed to release lease created for import")
|
|
| 52 |
+ } |
|
| 53 |
+ }() |
|
| 50 | 54 |
|
| 51 | 55 |
if platform == nil {
|
| 52 | 56 |
def := platforms.DefaultSpec() |
| ... | ... |
@@ -46,9 +46,8 @@ func (i *ImageService) PushImage(ctx context.Context, targetRef reference.Named, |
| 46 | 46 |
return err |
| 47 | 47 |
} |
| 48 | 48 |
defer func() {
|
| 49 |
- err := release(leasedCtx) |
|
| 50 |
- if err != nil && !cerrdefs.IsNotFound(err) {
|
|
| 51 |
- log.G(ctx).WithField("image", targetRef).WithError(err).Error("failed to delete lease created for push")
|
|
| 49 |
+ if err := release(leasedCtx); err != nil {
|
|
| 50 |
+ log.G(ctx).WithField("image", targetRef).WithError(err).Warn("failed to release lease created for push")
|
|
| 52 | 51 |
} |
| 53 | 52 |
}() |
| 54 | 53 |
|