@@ -5,16 +5,18 @@ import (
5
5
"context"
6
6
"fmt"
7
7
"strings"
8
- "time"
9
8
10
9
"github.com/containerd/containerd/content"
11
10
"github.com/containerd/containerd/leases"
11
+ "github.com/containerd/log"
12
12
distref "github.com/distribution/reference"
13
13
"github.com/docker/docker/image"
14
+ "github.com/docker/docker/internal/compatcontext"
14
15
"github.com/docker/docker/layer"
15
16
"github.com/moby/buildkit/exporter"
16
17
"github.com/moby/buildkit/exporter/containerimage"
17
18
"github.com/moby/buildkit/exporter/containerimage/exptypes"
19
+ "github.com/moby/buildkit/util/leaseutil"
18
20
"github.com/opencontainers/go-digest"
19
21
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
20
22
"github.com/pkg/errors"
@@ -222,22 +224,29 @@ func (e *imageExporterInstance) newTempReference(ctx context.Context, config []b
222
224
lm := e .opt .LeaseManager
223
225
224
226
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 )
226
228
if err != nil {
227
229
return nil , err
228
230
}
229
231
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
+
230
240
desc := ocispec.Descriptor {
231
241
Digest : dgst ,
232
242
MediaType : "application/vnd.docker.container.image.v1+json" ,
233
243
Size : int64 (len (config )),
234
244
}
235
245
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 )
237
248
return nil , fmt .Errorf ("failed to save temporary image config: %w" , err )
238
249
}
239
250
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
243
252
}
0 commit comments