Fix fwatchdog timer memory leak issue

Use timer.AfterFunc to make sure goroutine could be gc.

Signed-off-by: Mike Chiu <mike.chiu@pentium.network>
This commit is contained in:
Mike Chiu 2018-12-25 13:39:00 +08:00 committed by Alex Ellis
parent cfac88b001
commit 1261aadebe

View File

@ -109,10 +109,7 @@ func pipeRequest(config *WatchdogConfig, w http.ResponseWriter, r *http.Request,
var timer *time.Timer
if config.execTimeout > 0*time.Second {
timer = time.NewTimer(config.execTimeout)
go func() {
<-timer.C
timer = time.AfterFunc(config.execTimeout, func() {
log.Printf("Killing process: %s\n", config.faasProcess)
if targetCmd != nil && targetCmd.Process != nil {
ri.headerWritten = true
@ -125,7 +122,7 @@ func pipeRequest(config *WatchdogConfig, w http.ResponseWriter, r *http.Request,
log.Printf("Killed process: %s - error %s\n", config.faasProcess, val.Error())
}
}
}()
})
}
// Write to pipe in separate go-routine to prevent blocking