Skip to content

Commit 6c10086

Browse files
authored
Merge pull request moby#47520 from vvoland/buildkit-v13-leaseutil
builder-next/export: Use leaseutil for descref lease
2 parents d91665a + 49b7775 commit 6c10086

File tree

1 file changed

+15
-6
lines changed
  • builder/builder-next/exporter/mobyexporter

1 file changed

+15
-6
lines changed

builder/builder-next/exporter/mobyexporter/export.go

+15-6
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,18 @@ import (
55
"context"
66
"fmt"
77
"strings"
8-
"time"
98

109
"github.com/containerd/containerd/content"
1110
"github.com/containerd/containerd/leases"
11+
"github.com/containerd/log"
1212
distref "github.com/distribution/reference"
1313
"github.com/docker/docker/image"
14+
"github.com/docker/docker/internal/compatcontext"
1415
"github.com/docker/docker/layer"
1516
"github.com/moby/buildkit/exporter"
1617
"github.com/moby/buildkit/exporter/containerimage"
1718
"github.com/moby/buildkit/exporter/containerimage/exptypes"
19+
"github.com/moby/buildkit/util/leaseutil"
1820
"github.com/opencontainers/go-digest"
1921
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
2022
"github.com/pkg/errors"
@@ -222,22 +224,29 @@ func (e *imageExporterInstance) newTempReference(ctx context.Context, config []b
222224
lm := e.opt.LeaseManager
223225

224226
dgst := digest.FromBytes(config)
225-
lease, err := lm.Create(ctx, leases.WithRandomID(), leases.WithExpiration(time.Hour))
227+
leaseCtx, done, err := leaseutil.WithLease(ctx, lm, leaseutil.MakeTemporary)
226228
if err != nil {
227229
return nil, err
228230
}
229231

232+
unlease := func(ctx context.Context) error {
233+
err := done(compatcontext.WithoutCancel(ctx))
234+
if err != nil {
235+
log.G(ctx).WithError(err).Error("failed to delete descriptor reference lease")
236+
}
237+
return err
238+
}
239+
230240
desc := ocispec.Descriptor{
231241
Digest: dgst,
232242
MediaType: "application/vnd.docker.container.image.v1+json",
233243
Size: int64(len(config)),
234244
}
235245

236-
if err := content.WriteBlob(ctx, e.opt.ContentStore, desc.Digest.String(), bytes.NewReader(config), desc); err != nil {
246+
if err := content.WriteBlob(leaseCtx, e.opt.ContentStore, desc.Digest.String(), bytes.NewReader(config), desc); err != nil {
247+
unlease(leaseCtx)
237248
return nil, fmt.Errorf("failed to save temporary image config: %w", err)
238249
}
239250

240-
return containerimage.NewDescriptorReference(desc, func(ctx context.Context) error {
241-
return lm.Delete(ctx, lease)
242-
}), nil
251+
return containerimage.NewDescriptorReference(desc, unlease), nil
243252
}

0 commit comments

Comments
 (0)