1
0
mirror of https://github.com/golang/go synced 2024-11-23 16:50:06 -07:00

cmd/pprof: remove tempDir when no longer needed

The pprof tools properly cleans up all files it creates, but forgets
to clean up the temporary directory itself. This CL fixes that.

Fixes #13863

Change-Id: I1151c36cdad5ace7cc97e7e04001cf0149ef0f63
Reviewed-on: https://go-review.googlesource.com/23019
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
Joe Tsai 2016-05-11 10:23:37 -07:00 committed by Joe Tsai
parent 2ffb3e5d90
commit e9407ae514
2 changed files with 6 additions and 4 deletions

View File

@ -197,6 +197,7 @@ func makeVizTmpDir() error {
if err != nil {
return err
}
tempfile.DeferDelete(name)
vizTmpDir = name
return nil
}

View File

@ -27,18 +27,19 @@ func New(dir, prefix, suffix string) (*os.File, error) {
var tempFiles []string
var tempFilesMu = sync.Mutex{}
// DeferDelete marks a file to be deleted by next call to Cleanup()
// DeferDelete marks a file or directory to be deleted by next call to Cleanup.
func DeferDelete(path string) {
tempFilesMu.Lock()
tempFiles = append(tempFiles, path)
tempFilesMu.Unlock()
}
// Cleanup removes any temporary files selected for deferred cleaning.
// Cleanup removes any temporary files or directories selected for deferred cleaning.
// Similar to defer semantics, the nodes are deleted in LIFO order.
func Cleanup() {
tempFilesMu.Lock()
for _, f := range tempFiles {
os.Remove(f)
for i := len(tempFiles) - 1; i >= 0; i-- {
os.Remove(tempFiles[i])
}
tempFiles = nil
tempFilesMu.Unlock()