@@ -205,16 +205,20 @@ func cryptLayer(ctx context.Context, cs content.Store, ls leases.Manager, l leas
205205 return ocispec.Descriptor {}, errors .Wrap (err , "failed to write config" )
206206 }
207207 } else {
208- newDesc .Digest , newDesc .Size , err = ingestReader (ctx , cs , ref , resultReader )
208+ newDesc .Digest , newDesc .Size , err = ingestReaderLeaseContent (ctx , cs , ls , l , ref , resultReader )
209209 if err != nil {
210210 return ocispec.Descriptor {}, err
211211 }
212+ // Delete the ingest lease since the blob is protected now by the content lease
213+ if err := ls .DeleteResource (ctx , l , rsrc ); err != nil {
214+ return ocispec.Descriptor {}, errors .Wrap (err , "Unable to delete resource from lease" )
215+ }
212216 }
213217 }
214218 return newDesc , err
215219}
216220
217- func ingestReader (ctx context.Context , cs content.Ingester , ref string , r io.Reader ) (digest.Digest , int64 , error ) {
221+ func ingestReaderLeaseContent (ctx context.Context , cs content.Ingester , ls leases. Manager , l leases. Lease , ref string , r io.Reader ) (digest.Digest , int64 , error ) {
218222 cw , err := content .OpenWriter (ctx , cs , content .WithRef (ref ))
219223 if err != nil {
220224 return "" , 0 , errors .Wrap (err , "failed to open writer" )
@@ -230,7 +234,16 @@ func ingestReader(ctx context.Context, cs content.Ingester, ref string, r io.Rea
230234 return "" , 0 , errors .Wrap (err , "failed to get state" )
231235 }
232236
233- if err := cw .Commit (ctx , st .Offset , "" ); err != nil {
237+ rsrc := leases.Resource {
238+ ID : cw .Digest ().String (),
239+ Type : "content" ,
240+ }
241+
242+ if err := ls .AddResource (ctx , l , rsrc ); err != nil {
243+ return "" , 0 , errors .Wrapf (err , "Unable to add resource to lease" )
244+ }
245+
246+ if err := cw .Commit (ctx , st .Offset , cw .Digest ()); err != nil {
234247 if ! errdefs .IsAlreadyExists (err ) {
235248 return "" , 0 , errors .Wrapf (err , "failed commit on ref %q" , ref )
236249 }
@@ -324,7 +337,7 @@ func cryptChildren(ctx context.Context, cs content.Store, ls leases.Manager, l l
324337 }
325338
326339 rsrc := leases.Resource {
327- ID : desc .Digest .String (),
340+ ID : newDesc .Digest .String (),
328341 Type : "content" ,
329342 }
330343
@@ -415,7 +428,7 @@ func cryptManifestList(ctx context.Context, cs content.Store, ls leases.Manager,
415428 }
416429
417430 rsrc := leases.Resource {
418- ID : desc .Digest .String (),
431+ ID : newDesc .Digest .String (),
419432 Type : "content" ,
420433 }
421434
0 commit comments