From 003875c4eb7e951ffec729d3b94f8cd8b5e9a62f Mon Sep 17 00:00:00 2001 From: Michael Gehring Date: Tue, 22 Sep 2015 09:13:36 +0200 Subject: [PATCH 1/3] Fix fd leak --- pkg/api/cache.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/api/cache.go b/pkg/api/cache.go index ac97d7289f..fb27157459 100644 --- a/pkg/api/cache.go +++ b/pkg/api/cache.go @@ -185,6 +185,7 @@ func (c *ScalewayCache) Save() error { if err != nil { return err } + defer file.Close() encoder := json.NewEncoder(file) err = encoder.Encode(*c) if err != nil { From d27310ccecd27daee26c75e5db87164ac2c58557 Mon Sep 17 00:00:00 2001 From: Michael Gehring Date: Tue, 22 Sep 2015 09:22:49 +0200 Subject: [PATCH 2/3] Delete tmp cache file in error paths --- pkg/api/cache.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/api/cache.go b/pkg/api/cache.go index fb27157459..2d9438de56 100644 --- a/pkg/api/cache.go +++ b/pkg/api/cache.go @@ -189,9 +189,14 @@ func (c *ScalewayCache) Save() error { encoder := json.NewEncoder(file) err = encoder.Encode(*c) if err != nil { + os.Remove(file.Name()) + return err + } + + if err := os.Rename(file.Name(), c.Path); err != nil { + os.Remove(file.Name()) return err } - return os.Rename(file.Name(), c.Path) } return nil } From dee646a948f8f83901f328f22203e341d22d13e1 Mon Sep 17 00:00:00 2001 From: Michael Gehring Date: Tue, 22 Sep 2015 09:23:24 +0200 Subject: [PATCH 3/3] Write tmp cache file on the same partition --- pkg/api/cache.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/api/cache.go b/pkg/api/cache.go index 2d9438de56..a2262e54b3 100644 --- a/pkg/api/cache.go +++ b/pkg/api/cache.go @@ -181,7 +181,7 @@ func (c *ScalewayCache) Save() error { logrus.Debugf("Writing cache file to disk") if c.Modified { - file, err := ioutil.TempFile("", "") + file, err := ioutil.TempFile(filepath.Dir(c.Path), filepath.Base(c.Path)) if err != nil { return err }