From bde8dbe0df16f995c275dbeed27ff4b36115c8ea Mon Sep 17 00:00:00 2001 From: Stephen J Day Date: Wed, 21 Jan 2015 14:16:39 -0800 Subject: [PATCH] Ensure that progress reader is closed after usage Signed-off-by: Stephen J Day Upstream-commit: 4e4a5b25328566efad9ade3e7e0737ba48c090ab Component: engine --- components/engine/graph/push.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/components/engine/graph/push.go b/components/engine/graph/push.go index 316eed91be..b8fb09882e 100644 --- a/components/engine/graph/push.go +++ b/components/engine/graph/push.go @@ -236,7 +236,10 @@ func (s *TagStore) pushImage(r *registry.Session, out io.Writer, imgID, ep strin // Send the layer log.Debugf("rendered layer for %s of [%d] size", imgData.ID, layerData.Size) - checksum, checksumPayload, err := r.PushImageLayerRegistry(imgData.ID, utils.ProgressReader(layerData, int(layerData.Size), out, sf, false, utils.TruncateID(imgData.ID), "Pushing"), ep, token, jsonRaw) + prgRd := utils.ProgressReader(layerData, int(layerData.Size), out, sf, false, utils.TruncateID(imgData.ID), "Pushing") + defer prgRd.Close() + + checksum, checksumPayload, err := r.PushImageLayerRegistry(imgData.ID, prgRd, ep, token, jsonRaw) if err != nil { return "", err } @@ -338,8 +341,12 @@ func (s *TagStore) pushV2Repository(r *registry.Session, eng *engine.Engine, out out.Write(sf.FormatProgress(utils.TruncateID(img.ID), "Image push failed", nil)) return err } + if !exists { - err = r.PutV2ImageBlob(endpoint, repoInfo.RemoteName, sumParts[0], manifestSum, utils.ProgressReader(arch, int(img.Size), out, sf, false, utils.TruncateID(img.ID), "Pushing"), auth) + prgRd := utils.ProgressReader(arch, int(img.Size), out, sf, false, utils.TruncateID(img.ID), "Pushing") + defer prgRd.Close() + + err = r.PutV2ImageBlob(endpoint, repoInfo.RemoteName, sumParts[0], manifestSum, prgRd, auth) if err != nil { out.Write(sf.FormatProgress(utils.TruncateID(img.ID), "Image push failed", nil)) return err