소스 검색

c8d: Fix pull progress update

We were sending the "Pulling from ..." message too early, if the pull
progress wasn't able to resolve the image we wouldn't sent the error
back. Sending that first message would have flushed the output stream
and image_routes.go would return a nil error.

Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
Djordje Lukic 1 년 전
부모
커밋
32e2c53467
1개의 변경된 파일6개의 추가작업 그리고 2개의 파일을 삭제
  1. 6 2
      daemon/containerd/image_pull.go

+ 6 - 2
daemon/containerd/image_pull.go

@@ -73,8 +73,14 @@ func (i *ImageService) PullImage(ctx context.Context, image, tagOrDigest string,
 	finishProgress := jobs.showProgress(ctx, out, pp)
 	defer finishProgress()
 
+	var sentPullingFrom bool
 	ah := images.HandlerFunc(func(ctx context.Context, desc ocispec.Descriptor) ([]ocispec.Descriptor, error) {
 		if images.IsManifestType(desc.MediaType) {
+			if !sentPullingFrom {
+				progress.Message(out, tagOrDigest, "Pulling from "+reference.Path(ref))
+				sentPullingFrom = true
+			}
+
 			available, _, _, missing, err := images.Check(ctx, i.client.ContentStore(), desc, p)
 			if err != nil {
 				return nil, err
@@ -98,8 +104,6 @@ func (i *ImageService) PullImage(ctx context.Context, image, tagOrDigest string,
 	infoHandler := snapshotters.AppendInfoHandlerWrapper(ref.String())
 	opts = append(opts, containerd.WithImageHandlerWrapper(infoHandler))
 
-	progress.Message(out, tagOrDigest, "Pulling from "+reference.Path(ref))
-
 	img, err := i.client.Pull(ctx, ref.String(), opts...)
 	if err != nil {
 		return err