From b890f056e87d3823beeedf1339cd53469d4819b9 Mon Sep 17 00:00:00 2001 From: Shiming Zhang Date: Sat, 8 May 2021 12:30:16 +0800 Subject: [PATCH] Fix content.ReaderAt close Signed-off-by: Shiming Zhang --- cmd/ctr/commands/snapshots/snapshots.go | 1 + content/testsuite/testsuite.go | 1 + images/archive/importer.go | 4 +++- install.go | 3 +++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/cmd/ctr/commands/snapshots/snapshots.go b/cmd/ctr/commands/snapshots/snapshots.go index cb8f05924..d36c85802 100644 --- a/cmd/ctr/commands/snapshots/snapshots.go +++ b/cmd/ctr/commands/snapshots/snapshots.go @@ -164,6 +164,7 @@ var diffCommand = cli.Command{ if err != nil { return err } + defer ra.Close() _, err = io.Copy(os.Stdout, content.NewReader(ra)) return err diff --git a/content/testsuite/testsuite.go b/content/testsuite/testsuite.go index 8264f6274..2402534ea 100644 --- a/content/testsuite/testsuite.go +++ b/content/testsuite/testsuite.go @@ -780,6 +780,7 @@ func checkSmallBlob(ctx context.Context, t *testing.T, store content.Store) { if err != nil { t.Fatal(err) } + defer ra.Close() r := io.NewSectionReader(ra, 0, readSize) b, err := ioutil.ReadAll(r) if err != nil { diff --git a/images/archive/importer.go b/images/archive/importer.go index 2d046589f..f0de1dc05 100644 --- a/images/archive/importer.go +++ b/images/archive/importer.go @@ -281,6 +281,7 @@ func resolveLayers(ctx context.Context, store content.Store, layerFiles []string } s, err := compression.DecompressStream(content.NewReader(ra)) if err != nil { + ra.Close() return nil, errors.Wrapf(err, "failed to detect compression for %q", layerFiles[i]) } if s.GetCompression() == compression.Uncompressed { @@ -292,6 +293,7 @@ func resolveLayers(ctx context.Context, store content.Store, layerFiles []string layers[i], err = compressBlob(ctx, store, s, ref, content.WithLabels(labels)) if err != nil { s.Close() + ra.Close() return nil, err } layers[i].MediaType = images.MediaTypeDockerSchema2LayerGzip @@ -302,7 +304,7 @@ func resolveLayers(ctx context.Context, store content.Store, layerFiles []string layers[i].MediaType = images.MediaTypeDockerSchema2LayerGzip } s.Close() - + ra.Close() } return layers, nil } diff --git a/install.go b/install.go index 7a8311c83..274f42c2a 100644 --- a/install.go +++ b/install.go @@ -66,6 +66,7 @@ func (c *Client) Install(ctx context.Context, image Image, opts ...InstallOpts) cr := content.NewReader(ra) r, err := compression.DecompressStream(cr) if err != nil { + ra.Close() return err } if _, err := archive.Apply(ctx, path, r, archive.WithFilter(func(hdr *tar.Header) (bool, error) { @@ -87,9 +88,11 @@ func (c *Client) Install(ctx context.Context, image Image, opts ...InstallOpts) return result, nil })); err != nil { r.Close() + ra.Close() return err } r.Close() + ra.Close() } return nil }