Skip to content

Commit c00517a

Browse files
committed
Made fixes and optimizations to encryption GC
Signed-off-by: Brandon Lum <[email protected]>
1 parent 5631fe3 commit c00517a

1 file changed

Lines changed: 18 additions & 5 deletions

File tree

images/encryption/encryption.go

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)