From 909d9273ccb259f97eef5678597c5f8110b772db Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 25 Jan 2018 21:05:57 +0100 Subject: [PATCH] Close backend files in case of errors --- internal/cache/backend.go | 1 + internal/checker/checker.go | 2 ++ internal/repository/repack.go | 1 + 3 files changed, 4 insertions(+) diff --git a/internal/cache/backend.go b/internal/cache/backend.go index 9f545f309..827a25341 100644 --- a/internal/cache/backend.go +++ b/internal/cache/backend.go @@ -127,6 +127,7 @@ func (b *Backend) cacheFile(ctx context.Context, h restic.Handle) error { } if err = b.Cache.Save(h, rd); err != nil { + _ = rd.Close() return err } diff --git a/internal/checker/checker.go b/internal/checker/checker.go index aec691857..5c90d79a0 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -637,6 +637,7 @@ func checkPack(ctx context.Context, r restic.Repository, id restic.ID) error { packfile, err := fs.TempFile("", "restic-temp-check-") if err != nil { + _ = rd.Close() return errors.Wrap(err, "TempFile") } @@ -648,6 +649,7 @@ func checkPack(ctx context.Context, r restic.Repository, id restic.ID) error { hrd := hashing.NewReader(rd, sha256.New()) size, err := io.Copy(packfile, hrd) if err != nil { + _ = rd.Close() return errors.Wrap(err, "Copy") } diff --git a/internal/repository/repack.go b/internal/repository/repack.go index b8e80c3a2..438fd9ce4 100644 --- a/internal/repository/repack.go +++ b/internal/repository/repack.go @@ -40,6 +40,7 @@ func Repack(ctx context.Context, repo restic.Repository, packs restic.IDSet, kee hrd := hashing.NewReader(beRd, sha256.New()) packLength, err := io.Copy(tempfile, hrd) if err != nil { + _ = beRd.Close() return nil, errors.Wrap(err, "Copy") }