From 89e8097d4cd06b91a9f2d2c88ca56eb7b68070da Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Mon, 8 Oct 2018 21:48:55 -0700 Subject: [PATCH] fix setting uncompressed label on content Signed-off-by: Tonis Tiigi --- cache/blobs/blobs.go | 2 +- snapshot/blobmapping/snapshotter.go | 13 ++++++++++++- util/pull/pull.go | 3 +-- worker/base/worker.go | 5 +---- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/cache/blobs/blobs.go b/cache/blobs/blobs.go index 69e172413..a1e1b6069 100644 --- a/cache/blobs/blobs.go +++ b/cache/blobs/blobs.go @@ -115,7 +115,7 @@ func getDiffPairs(ctx context.Context, contentStore content.Store, snapshotter s } diffIDStr, ok := info.Labels[containerdUncompressed] if !ok { - return nil, errors.Errorf("invalid differ response with no diffID") + return nil, errors.Errorf("invalid differ response with no diffID: %v", descr.Digest) } diffIDDigest, err := digest.Parse(diffIDStr) if err != nil { diff --git a/snapshot/blobmapping/snapshotter.go b/snapshot/blobmapping/snapshotter.go index d6861ae5d..e145235a2 100644 --- a/snapshot/blobmapping/snapshotter.go +++ b/snapshot/blobmapping/snapshotter.go @@ -107,10 +107,21 @@ func (s *Snapshotter) GetBlob(ctx context.Context, key string) (digest.Digest, d // Checks that there is a blob in the content store. // If same blob has already been set then this is a noop. func (s *Snapshotter) SetBlob(ctx context.Context, key string, diffID, blobsum digest.Digest) error { - _, err := s.opt.Content.Info(ctx, blobsum) + info, err := s.opt.Content.Info(ctx, blobsum) if err != nil { return err } + if _, ok := info.Labels["containerd.io/uncompressed"]; !ok { + labels := map[string]string{ + "containerd.io/uncompressed": diffID.String(), + } + if _, err := s.opt.Content.Update(ctx, content.Info{ + Digest: blobsum, + Labels: labels, + }, "labels.containerd.io/uncompressed"); err != nil { + return err + } + } md, _ := s.opt.MetadataStore.Get(key) v, err := metadata.NewValue(DiffPair{DiffID: diffID, Blobsum: blobsum}) diff --git a/util/pull/pull.go b/util/pull/pull.go index 21192b42a..350d77fd7 100644 --- a/util/pull/pull.go +++ b/util/pull/pull.go @@ -241,8 +241,7 @@ func unpack(ctx context.Context, desc ocispec.Descriptor, cs content.Store, csh var chain []digest.Digest for _, layer := range layers { labels := map[string]string{ - "containerd.io/gc.root": time.Now().UTC().Format(time.RFC3339Nano), - "containerd.io/uncompressed": layer.Diff.Digest.String(), + "containerd.io/gc.root": time.Now().UTC().Format(time.RFC3339Nano), } if _, err := rootfs.ApplyLayer(ctx, layer, chain, csh, applier, ctdsnapshot.WithLabels(labels)); err != nil { return "", err diff --git a/worker/base/worker.go b/worker/base/worker.go index c841e55ee..2c666ef16 100644 --- a/worker/base/worker.go +++ b/worker/base/worker.go @@ -388,10 +388,7 @@ func (w *Worker) unpack(ctx context.Context, descs []ocispec.Descriptor, s cdsna var chain []digest.Digest for _, layer := range layers { - labels := map[string]string{ - "containerd.io/uncompressed": layer.Diff.Digest.String(), - } - if _, err := rootfs.ApplyLayer(ctx, layer, chain, s, w.Applier, cdsnapshot.WithLabels(labels)); err != nil { + if _, err := rootfs.ApplyLayer(ctx, layer, chain, s, w.Applier); err != nil { return nil, err } chain = append(chain, layer.Diff.Digest)