mirror of
https://github.com/golang/go
synced 2024-11-23 16:20:04 -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:
parent
2ffb3e5d90
commit
e9407ae514
@ -197,6 +197,7 @@ func makeVizTmpDir() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tempfile.DeferDelete(name)
|
||||
vizTmpDir = name
|
||||
return nil
|
||||
}
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user