From 4f3b0d0f4ad046a5180f524ba320990c67282dd0 Mon Sep 17 00:00:00 2001 From: Arnaud Porterie Date: Wed, 12 Aug 2015 18:32:23 -0700 Subject: [PATCH] Revert #14884 This reverts commit 810d3b2642d4a82dc186d6eff8c2e487ee624bc5. Signed-off-by: Arnaud Porterie --- graph/push.go | 13 ++++++------ graph/push_v2.go | 11 ++++------ integration-cli/docker_cli_push_test.go | 27 +------------------------ 3 files changed, 11 insertions(+), 40 deletions(-) diff --git a/graph/push.go b/graph/push.go index 0318f81a5f..6a6bdfec2b 100644 --- a/graph/push.go +++ b/graph/push.go @@ -44,13 +44,12 @@ func (s *TagStore) NewPusher(endpoint registry.APIEndpoint, localRepo Repository switch endpoint.Version { case registry.APIVersion2: return &v2Pusher{ - TagStore: s, - endpoint: endpoint, - localRepo: localRepo, - repoInfo: repoInfo, - config: imagePushConfig, - sf: sf, - layersSeen: make(map[string]bool), + TagStore: s, + endpoint: endpoint, + localRepo: localRepo, + repoInfo: repoInfo, + config: imagePushConfig, + sf: sf, }, nil case registry.APIVersion1: return &v1Pusher{ diff --git a/graph/push_v2.go b/graph/push_v2.go index 3d74ad46f8..da90ebf6d2 100644 --- a/graph/push_v2.go +++ b/graph/push_v2.go @@ -27,11 +27,6 @@ type v2Pusher struct { config *ImagePushConfig sf *streamformatter.StreamFormatter repo distribution.Repository - - // layersSeen is the set of layers known to exist on the remote side. - // This avoids redundant queries when pushing multiple tags that - // involve the same layers. - layersSeen map[string]bool } func (p *v2Pusher) Push() (fallback bool, err error) { @@ -92,6 +87,8 @@ func (p *v2Pusher) pushV2Tag(tag string) error { return fmt.Errorf("tag does not exist: %s", tag) } + layersSeen := make(map[string]bool) + layer, err := p.graph.Get(layerID) if err != nil { return err @@ -120,7 +117,7 @@ func (p *v2Pusher) pushV2Tag(tag string) error { return err } - if p.layersSeen[layer.ID] { + if layersSeen[layer.ID] { break } @@ -175,7 +172,7 @@ func (p *v2Pusher) pushV2Tag(tag string) error { m.FSLayers = append(m.FSLayers, manifest.FSLayer{BlobSum: dgst}) m.History = append(m.History, manifest.History{V1Compatibility: string(jsonData)}) - p.layersSeen[layer.ID] = true + layersSeen[layer.ID] = true } logrus.Infof("Signed manifest for %s:%s using daemon's key: %s", p.repo.Name(), tag, p.trustKey.KeyID()) diff --git a/integration-cli/docker_cli_push_test.go b/integration-cli/docker_cli_push_test.go index 51bd74e90c..feb39de0ac 100644 --- a/integration-cli/docker_cli_push_test.go +++ b/integration-cli/docker_cli_push_test.go @@ -60,32 +60,7 @@ func (s *DockerRegistrySuite) TestPushMultipleTags(c *check.C) { dockerCmd(c, "tag", "busybox", repoTag2) - out, _ := dockerCmd(c, "push", repoName) - - // There should be no duplicate hashes in the output - imageSuccessfullyPushed := ": Image successfully pushed" - imageAlreadyExists := ": Image already exists" - imagePushHashes := make(map[string]struct{}) - outputLines := strings.Split(out, "\n") - for _, outputLine := range outputLines { - if strings.Contains(outputLine, imageSuccessfullyPushed) { - hash := strings.TrimSuffix(outputLine, imageSuccessfullyPushed) - if _, present := imagePushHashes[hash]; present { - c.Fatalf("Duplicate image push: %s", outputLine) - } - imagePushHashes[hash] = struct{}{} - } else if strings.Contains(outputLine, imageAlreadyExists) { - hash := strings.TrimSuffix(outputLine, imageAlreadyExists) - if _, present := imagePushHashes[hash]; present { - c.Fatalf("Duplicate image push: %s", outputLine) - } - imagePushHashes[hash] = struct{}{} - } - } - - if len(imagePushHashes) == 0 { - c.Fatal(`Expected at least one line containing "Image successfully pushed"`) - } + dockerCmd(c, "push", repoName) } func (s *DockerRegistrySuite) TestPushInterrupt(c *check.C) {