diff options
author | Alex Goodman <wagoodman@gmail.com> | 2018-11-24 21:02:58 -0500 |
---|---|---|
committer | Alex Goodman <wagoodman@gmail.com> | 2018-11-24 21:02:58 -0500 |
commit | b1962b9ae549c20ba0f7cd0d37db3587ff174bac (patch) | |
tree | a492686aacdb808de81c6ec669f9e8d336451c69 | |
parent | 7d868096ca394a6fa437087dee7db8a0eadcae23 (diff) |
ensure tmp image is cleaned up on crash (addresses part of #58)v0.3.0
-rw-r--r-- | image/image.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/image/image.go b/image/image.go index 38497ce..3c8baaf 100644 --- a/image/image.go +++ b/image/image.go @@ -361,12 +361,17 @@ func saveImage(imageID string) (string, string) { tmpDir, err := ioutil.TempDir("", "dive") check(err) + cleanUpTmp := func() { + os.RemoveAll(tmpDir) + } + imageTarPath := filepath.Join(tmpDir, "image.tar") imageFile, err := os.Create(imageTarPath) check(err) defer func() { if err := imageFile.Close(); err != nil { + cleanUpTmp() logrus.Panic(err) } }() @@ -379,6 +384,7 @@ func saveImage(imageID string) (string, string) { for { n, err := readCloser.Read(buf) if err != nil && err != io.EOF { + cleanUpTmp() logrus.Panic(err) } if n == 0 { @@ -392,11 +398,13 @@ func saveImage(imageID string) (string, string) { } if _, err := imageWriter.Write(buf[:n]); err != nil { + cleanUpTmp() logrus.Panic(err) } } if err = imageWriter.Flush(); err != nil { + cleanUpTmp() logrus.Panic(err) } |