Made fixes and optimizations to encryption GC
Signed-off-by: Brandon Lum <lumjjb@gmail.com>
This commit is contained in:
parent
5631fe3b32
commit
c00517a94c
@ -205,16 +205,20 @@ func cryptLayer(ctx context.Context, cs content.Store, ls leases.Manager, l leas
|
|||||||
return ocispec.Descriptor{}, errors.Wrap(err, "failed to write config")
|
return ocispec.Descriptor{}, errors.Wrap(err, "failed to write config")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
newDesc.Digest, newDesc.Size, err = ingestReader(ctx, cs, ref, resultReader)
|
newDesc.Digest, newDesc.Size, err = ingestReaderLeaseContent(ctx, cs, ls, l, ref, resultReader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ocispec.Descriptor{}, err
|
return ocispec.Descriptor{}, err
|
||||||
}
|
}
|
||||||
|
// Delete the ingest lease since the blob is protected now by the content lease
|
||||||
|
if err := ls.DeleteResource(ctx, l, rsrc); err != nil {
|
||||||
|
return ocispec.Descriptor{}, errors.Wrap(err, "Unable to delete resource from lease")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return newDesc, err
|
return newDesc, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func ingestReader(ctx context.Context, cs content.Ingester, ref string, r io.Reader) (digest.Digest, int64, error) {
|
func ingestReaderLeaseContent(ctx context.Context, cs content.Ingester, ls leases.Manager, l leases.Lease, ref string, r io.Reader) (digest.Digest, int64, error) {
|
||||||
cw, err := content.OpenWriter(ctx, cs, content.WithRef(ref))
|
cw, err := content.OpenWriter(ctx, cs, content.WithRef(ref))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", 0, errors.Wrap(err, "failed to open writer")
|
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
|
|||||||
return "", 0, errors.Wrap(err, "failed to get state")
|
return "", 0, errors.Wrap(err, "failed to get state")
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := cw.Commit(ctx, st.Offset, ""); err != nil {
|
rsrc := leases.Resource{
|
||||||
|
ID: cw.Digest().String(),
|
||||||
|
Type: "content",
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := ls.AddResource(ctx, l, rsrc); err != nil {
|
||||||
|
return "", 0, errors.Wrapf(err, "Unable to add resource to lease")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := cw.Commit(ctx, st.Offset, cw.Digest()); err != nil {
|
||||||
if !errdefs.IsAlreadyExists(err) {
|
if !errdefs.IsAlreadyExists(err) {
|
||||||
return "", 0, errors.Wrapf(err, "failed commit on ref %q", ref)
|
return "", 0, errors.Wrapf(err, "failed commit on ref %q", ref)
|
||||||
}
|
}
|
||||||
@ -324,7 +337,7 @@ func cryptChildren(ctx context.Context, cs content.Store, ls leases.Manager, l l
|
|||||||
}
|
}
|
||||||
|
|
||||||
rsrc := leases.Resource{
|
rsrc := leases.Resource{
|
||||||
ID: desc.Digest.String(),
|
ID: newDesc.Digest.String(),
|
||||||
Type: "content",
|
Type: "content",
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -415,7 +428,7 @@ func cryptManifestList(ctx context.Context, cs content.Store, ls leases.Manager,
|
|||||||
}
|
}
|
||||||
|
|
||||||
rsrc := leases.Resource{
|
rsrc := leases.Resource{
|
||||||
ID: desc.Digest.String(),
|
ID: newDesc.Digest.String(),
|
||||||
Type: "content",
|
Type: "content",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user