Merge pull request #454 from Random-Liu/revert-453
Revert "Add gc.root back in vendored containerd client."
This commit is contained in:
		
							
								
								
									
										7
									
								
								vendor/github.com/containerd/containerd/client.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/containerd/containerd/client.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -238,7 +238,7 @@ func (c *Client) Pull(ctx context.Context, ref string, opts ...RemoteOpt) (Image | ||||
| 		handler = images.Handlers(append(pullCtx.BaseHandlers, schema1Converter)...) | ||||
| 	} else { | ||||
| 		handler = images.Handlers(append(pullCtx.BaseHandlers, | ||||
| 			remotes.FetchHandler(store, fetcher, desc), | ||||
| 			remotes.FetchHandler(store, fetcher), | ||||
| 			images.ChildrenHandler(store, platforms.Default()))..., | ||||
| 		) | ||||
| 	} | ||||
| @@ -275,11 +275,6 @@ func (c *Client) Pull(ctx context.Context, ref string, opts ...RemoteOpt) (Image | ||||
| 		imgrec = created | ||||
| 	} | ||||
|  | ||||
| 	// Remove root tag from manifest now that image refers to it | ||||
| 	if _, err := store.Update(ctx, content.Info{Digest: desc.Digest}, "labels.containerd.io/gc.root"); err != nil { | ||||
| 		return nil, errors.Wrap(err, "failed to remove manifest root tag") | ||||
| 	} | ||||
|  | ||||
| 	img := &image{ | ||||
| 		client: c, | ||||
| 		i:      imgrec, | ||||
|   | ||||
							
								
								
									
										12
									
								
								vendor/github.com/containerd/containerd/container_opts.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/github.com/containerd/containerd/container_opts.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,13 +2,11 @@ package containerd | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/containerd/containerd/containers" | ||||
| 	"github.com/containerd/containerd/errdefs" | ||||
| 	"github.com/containerd/containerd/oci" | ||||
| 	"github.com/containerd/containerd/platforms" | ||||
| 	"github.com/containerd/containerd/snapshots" | ||||
| 	"github.com/containerd/typeurl" | ||||
| 	"github.com/gogo/protobuf/types" | ||||
| 	"github.com/opencontainers/image-spec/identity" | ||||
| @@ -95,11 +93,8 @@ func WithNewSnapshot(id string, i Image) NewContainerOpts { | ||||
| 			return err | ||||
| 		} | ||||
| 		setSnapshotterIfEmpty(c) | ||||
| 		labels := map[string]string{ | ||||
| 			"containerd.io/gc.root": time.Now().String(), | ||||
| 		} | ||||
| 		parent := identity.ChainID(diffIDs).String() | ||||
| 		if _, err := client.SnapshotService(c.Snapshotter).Prepare(ctx, id, parent, snapshots.WithLabels(labels)); err != nil { | ||||
| 		if _, err := client.SnapshotService(c.Snapshotter).Prepare(ctx, id, parent); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		c.SnapshotKey = id | ||||
| @@ -128,11 +123,8 @@ func WithNewSnapshotView(id string, i Image) NewContainerOpts { | ||||
| 			return err | ||||
| 		} | ||||
| 		setSnapshotterIfEmpty(c) | ||||
| 		labels := map[string]string{ | ||||
| 			"containerd.io/gc.root": time.Now().String(), | ||||
| 		} | ||||
| 		parent := identity.ChainID(diffIDs).String() | ||||
| 		if _, err := client.SnapshotService(c.Snapshotter).View(ctx, id, parent, snapshots.WithLabels(labels)); err != nil { | ||||
| 		if _, err := client.SnapshotService(c.Snapshotter).View(ctx, id, parent); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		c.SnapshotKey = id | ||||
|   | ||||
							
								
								
									
										15
									
								
								vendor/github.com/containerd/containerd/container_opts_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/containerd/containerd/container_opts_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -10,7 +10,6 @@ import ( | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"syscall" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/containerd/containerd/api/types" | ||||
| 	"github.com/containerd/containerd/containers" | ||||
| @@ -19,7 +18,6 @@ import ( | ||||
| 	"github.com/containerd/containerd/images" | ||||
| 	"github.com/containerd/containerd/mount" | ||||
| 	"github.com/containerd/containerd/platforms" | ||||
| 	"github.com/containerd/containerd/snapshots" | ||||
| 	"github.com/gogo/protobuf/proto" | ||||
| 	protobuf "github.com/gogo/protobuf/types" | ||||
| 	digest "github.com/opencontainers/go-digest" | ||||
| @@ -155,12 +153,9 @@ func withRemappedSnapshotBase(id string, i Image, uid, gid uint32, readonly bool | ||||
| 			snapshotter = client.SnapshotService(c.Snapshotter) | ||||
| 			parent      = identity.ChainID(diffIDs).String() | ||||
| 			usernsID    = fmt.Sprintf("%s-%d-%d", parent, uid, gid) | ||||
| 			opt         = snapshots.WithLabels(map[string]string{ | ||||
| 				"containerd.io/gc.root": time.Now().UTC().Format(time.RFC3339), | ||||
| 			}) | ||||
| 		) | ||||
| 		if _, err := snapshotter.Stat(ctx, usernsID); err == nil { | ||||
| 			if _, err := snapshotter.Prepare(ctx, id, usernsID, opt); err == nil { | ||||
| 			if _, err := snapshotter.Prepare(ctx, id, usernsID); err == nil { | ||||
| 				c.SnapshotKey = id | ||||
| 				c.Image = i.Name() | ||||
| 				return nil | ||||
| @@ -168,7 +163,7 @@ func withRemappedSnapshotBase(id string, i Image, uid, gid uint32, readonly bool | ||||
| 				return err | ||||
| 			} | ||||
| 		} | ||||
| 		mounts, err := snapshotter.Prepare(ctx, usernsID+"-remap", parent, opt) | ||||
| 		mounts, err := snapshotter.Prepare(ctx, usernsID+"-remap", parent) | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| @@ -176,13 +171,13 @@ func withRemappedSnapshotBase(id string, i Image, uid, gid uint32, readonly bool | ||||
| 			snapshotter.Remove(ctx, usernsID) | ||||
| 			return err | ||||
| 		} | ||||
| 		if err := snapshotter.Commit(ctx, usernsID, usernsID+"-remap", opt); err != nil { | ||||
| 		if err := snapshotter.Commit(ctx, usernsID, usernsID+"-remap"); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		if readonly { | ||||
| 			_, err = snapshotter.View(ctx, id, usernsID, opt) | ||||
| 			_, err = snapshotter.View(ctx, id, usernsID) | ||||
| 		} else { | ||||
| 			_, err = snapshotter.Prepare(ctx, id, usernsID, opt) | ||||
| 			_, err = snapshotter.Prepare(ctx, id, usernsID) | ||||
| 		} | ||||
| 		if err != nil { | ||||
| 			return err | ||||
|   | ||||
							
								
								
									
										23
									
								
								vendor/github.com/containerd/containerd/image.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/containerd/containerd/image.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,7 +3,6 @@ package containerd | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/containerd/containerd/content" | ||||
| 	"github.com/containerd/containerd/errdefs" | ||||
| @@ -110,27 +109,14 @@ func (i *image) Unpack(ctx context.Context, snapshotterName string) error { | ||||
| 	) | ||||
| 	for _, layer := range layers { | ||||
| 		labels := map[string]string{ | ||||
| 			"containerd.io/gc.root":      time.Now().UTC().Format(time.RFC3339), | ||||
| 			"containerd.io/uncompressed": layer.Diff.Digest.String(), | ||||
| 		} | ||||
| 		lastUnpacked := unpacked | ||||
|  | ||||
| 		unpacked, err = rootfs.ApplyLayer(ctx, layer, chain, sn, a, snapshots.WithLabels(labels)) | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
|  | ||||
| 		if lastUnpacked { | ||||
| 			info := snapshots.Info{ | ||||
| 				Name: identity.ChainID(chain).String(), | ||||
| 			} | ||||
|  | ||||
| 			// Remove previously created gc.root label | ||||
| 			if _, err := sn.Update(ctx, info, "labels.containerd.io/gc.root"); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		chain = append(chain, layer.Diff.Digest) | ||||
| 	} | ||||
|  | ||||
| @@ -151,15 +137,6 @@ func (i *image) Unpack(ctx context.Context, snapshotterName string) error { | ||||
| 		if _, err := cs.Update(ctx, cinfo, fmt.Sprintf("labels.containerd.io/gc.ref.snapshot.%s", snapshotterName)); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
|  | ||||
| 		sinfo := snapshots.Info{ | ||||
| 			Name: rootfs, | ||||
| 		} | ||||
|  | ||||
| 		// Config now referenced snapshot, release root reference | ||||
| 		if _, err := sn.Update(ctx, sinfo, "labels.containerd.io/gc.root"); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
|   | ||||
							
								
								
									
										13
									
								
								vendor/github.com/containerd/containerd/remotes/docker/schema1/converter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								vendor/github.com/containerd/containerd/remotes/docker/schema1/converter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -157,7 +157,6 @@ func (c *Converter) Convert(ctx context.Context) (ocispec.Descriptor, error) { | ||||
| 	} | ||||
|  | ||||
| 	labels := map[string]string{} | ||||
| 	labels["containerd.io/gc.root"] = time.Now().UTC().Format(time.RFC3339) | ||||
| 	labels["containerd.io/gc.ref.content.0"] = manifest.Config.Digest.String() | ||||
| 	for i, ch := range manifest.Layers { | ||||
| 		labels[fmt.Sprintf("containerd.io/gc.ref.content.%d", i+1)] = ch.Digest.String() | ||||
| @@ -173,12 +172,6 @@ func (c *Converter) Convert(ctx context.Context) (ocispec.Descriptor, error) { | ||||
| 		return ocispec.Descriptor{}, errors.Wrap(err, "failed to write config") | ||||
| 	} | ||||
|  | ||||
| 	for _, ch := range manifest.Layers { | ||||
| 		if _, err := c.contentStore.Update(ctx, content.Info{Digest: ch.Digest}, "labels.containerd.io/gc.root"); err != nil { | ||||
| 			return ocispec.Descriptor{}, errors.Wrap(err, "failed to remove blob root tag") | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return desc, nil | ||||
| } | ||||
|  | ||||
| @@ -287,10 +280,8 @@ tryit: | ||||
|  | ||||
| 		eg.Go(func() error { | ||||
| 			defer pw.Close() | ||||
| 			opt := content.WithLabels(map[string]string{ | ||||
| 				"containerd.io/gc.root": time.Now().UTC().Format(time.RFC3339), | ||||
| 			}) | ||||
| 			return content.Copy(ctx, cw, io.TeeReader(rc, pw), size, desc.Digest, opt) | ||||
|  | ||||
| 			return content.Copy(ctx, cw, io.TeeReader(rc, pw), size, desc.Digest) | ||||
| 		}) | ||||
|  | ||||
| 		if err := eg.Wait(); err != nil { | ||||
|   | ||||
							
								
								
									
										15
									
								
								vendor/github.com/containerd/containerd/remotes/handlers.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/containerd/containerd/remotes/handlers.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -45,7 +45,7 @@ func MakeRefKey(ctx context.Context, desc ocispec.Descriptor) string { | ||||
| // FetchHandler returns a handler that will fetch all content into the ingester | ||||
| // discovered in a call to Dispatch. Use with ChildrenHandler to do a full | ||||
| // recursive fetch. | ||||
| func FetchHandler(ingester content.Ingester, fetcher Fetcher, root ocispec.Descriptor) images.HandlerFunc { | ||||
| func FetchHandler(ingester content.Ingester, fetcher Fetcher) images.HandlerFunc { | ||||
| 	return func(ctx context.Context, desc ocispec.Descriptor) (subdescs []ocispec.Descriptor, err error) { | ||||
| 		ctx = log.WithLogger(ctx, log.G(ctx).WithFields(logrus.Fields{ | ||||
| 			"digest":    desc.Digest, | ||||
| @@ -57,13 +57,13 @@ func FetchHandler(ingester content.Ingester, fetcher Fetcher, root ocispec.Descr | ||||
| 		case images.MediaTypeDockerSchema1Manifest: | ||||
| 			return nil, fmt.Errorf("%v not supported", desc.MediaType) | ||||
| 		default: | ||||
| 			err := fetch(ctx, ingester, fetcher, desc, desc.Digest == root.Digest) | ||||
| 			err := fetch(ctx, ingester, fetcher, desc) | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func fetch(ctx context.Context, ingester content.Ingester, fetcher Fetcher, desc ocispec.Descriptor, root bool) error { | ||||
| func fetch(ctx context.Context, ingester content.Ingester, fetcher Fetcher, desc ocispec.Descriptor) error { | ||||
| 	log.G(ctx).Debug("fetch") | ||||
|  | ||||
| 	var ( | ||||
| @@ -105,13 +105,13 @@ func fetch(ctx context.Context, ingester content.Ingester, fetcher Fetcher, desc | ||||
| 	} | ||||
| 	defer rc.Close() | ||||
|  | ||||
| 	r, opts := commitOpts(desc, rc, root) | ||||
| 	r, opts := commitOpts(desc, rc) | ||||
| 	return content.Copy(ctx, cw, r, desc.Size, desc.Digest, opts...) | ||||
| } | ||||
|  | ||||
| // commitOpts gets the appropriate content options to alter | ||||
| // the content info on commit based on media type. | ||||
| func commitOpts(desc ocispec.Descriptor, r io.Reader, root bool) (io.Reader, []content.Opt) { | ||||
| func commitOpts(desc ocispec.Descriptor, r io.Reader) (io.Reader, []content.Opt) { | ||||
| 	var childrenF func(r io.Reader) ([]ocispec.Descriptor, error) | ||||
|  | ||||
| 	switch desc.MediaType { | ||||
| @@ -163,13 +163,10 @@ func commitOpts(desc ocispec.Descriptor, r io.Reader, root bool) (io.Reader, []c | ||||
| 			return errors.Wrap(err, "unable to get commit labels") | ||||
| 		} | ||||
|  | ||||
| 		if len(children) > 0 || root { | ||||
| 		if len(children) > 0 { | ||||
| 			if info.Labels == nil { | ||||
| 				info.Labels = map[string]string{} | ||||
| 			} | ||||
| 			if root { | ||||
| 				info.Labels["containerd.io/gc.root"] = time.Now().UTC().Format(time.RFC3339) | ||||
| 			} | ||||
| 			for i, ch := range children { | ||||
| 				info.Labels[fmt.Sprintf("containerd.io/gc.ref.content.%d", i)] = ch.Digest.String() | ||||
| 			} | ||||
|   | ||||
							
								
								
									
										25
									
								
								vendor/github.com/containerd/containerd/task.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								vendor/github.com/containerd/containerd/task.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -18,7 +18,6 @@ import ( | ||||
| 	"github.com/containerd/containerd/diff" | ||||
| 	"github.com/containerd/containerd/errdefs" | ||||
| 	"github.com/containerd/containerd/images" | ||||
| 	"github.com/containerd/containerd/log" | ||||
| 	"github.com/containerd/containerd/mount" | ||||
| 	"github.com/containerd/containerd/plugin" | ||||
| 	"github.com/containerd/containerd/rootfs" | ||||
| @@ -26,7 +25,6 @@ import ( | ||||
| 	google_protobuf "github.com/gogo/protobuf/types" | ||||
| 	digest "github.com/opencontainers/go-digest" | ||||
| 	"github.com/opencontainers/image-spec/specs-go/v1" | ||||
| 	ocispec "github.com/opencontainers/image-spec/specs-go/v1" | ||||
| 	specs "github.com/opencontainers/runtime-spec/specs-go" | ||||
| 	"github.com/pkg/errors" | ||||
| ) | ||||
| @@ -403,15 +401,6 @@ func (t *task) Checkpoint(ctx context.Context, opts ...CheckpointTaskOpts) (Imag | ||||
| 	index := v1.Index{ | ||||
| 		Annotations: make(map[string]string), | ||||
| 	} | ||||
| 	// make sure we clear the gc root labels reguardless of success | ||||
| 	var clearRoots []ocispec.Descriptor | ||||
| 	defer func() { | ||||
| 		for _, r := range append(index.Manifests, clearRoots...) { | ||||
| 			if err := clearRootGCLabel(ctx, t.client, r); err != nil { | ||||
| 				log.G(ctx).WithError(err).WithField("dgst", r.Digest).Warnf("failed to remove root marker") | ||||
| 			} | ||||
| 		} | ||||
| 	}() | ||||
| 	if err := t.checkpointTask(ctx, &index, request); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| @@ -430,7 +419,6 @@ func (t *task) Checkpoint(ctx context.Context, opts ...CheckpointTaskOpts) (Imag | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	clearRoots = append(clearRoots, desc) | ||||
| 	im := images.Image{ | ||||
| 		Name:   i.Name, | ||||
| 		Target: desc, | ||||
| @@ -546,9 +534,6 @@ func (t *task) checkpointTask(ctx context.Context, index *v1.Index, request *tas | ||||
| func (t *task) checkpointRWSnapshot(ctx context.Context, index *v1.Index, snapshotterName string, id string) error { | ||||
| 	opts := []diff.Opt{ | ||||
| 		diff.WithReference(fmt.Sprintf("checkpoint-rw-%s", id)), | ||||
| 		diff.WithLabels(map[string]string{ | ||||
| 			"containerd.io/gc.root": time.Now().UTC().Format(time.RFC3339), | ||||
| 		}), | ||||
| 	} | ||||
| 	rw, err := rootfs.Diff(ctx, id, t.client.SnapshotService(snapshotterName), t.client.DiffService(), opts...) | ||||
| 	if err != nil { | ||||
| @@ -575,9 +560,7 @@ func (t *task) checkpointImage(ctx context.Context, index *v1.Index, image strin | ||||
| } | ||||
|  | ||||
| func (t *task) writeIndex(ctx context.Context, index *v1.Index) (d v1.Descriptor, err error) { | ||||
| 	labels := map[string]string{ | ||||
| 		"containerd.io/gc.root": time.Now().UTC().Format(time.RFC3339), | ||||
| 	} | ||||
| 	labels := map[string]string{} | ||||
| 	for i, m := range index.Manifests { | ||||
| 		labels[fmt.Sprintf("containerd.io/gc.ref.content.%d", i)] = m.Digest.String() | ||||
| 	} | ||||
| @@ -607,9 +590,3 @@ func writeContent(ctx context.Context, store content.Store, mediaType, ref strin | ||||
| 		Size:      size, | ||||
| 	}, nil | ||||
| } | ||||
|  | ||||
| func clearRootGCLabel(ctx context.Context, client *Client, desc ocispec.Descriptor) error { | ||||
| 	info := content.Info{Digest: desc.Digest} | ||||
| 	_, err := client.ContentStore().Update(ctx, info, "labels.containerd.io/gc.root") | ||||
| 	return err | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Lantao Liu
					Lantao Liu