Permalink
Browse files

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>
  • Loading branch information...
Mike Chiu authored and alexellis committed Dec 25, 2018
1 parent cfac88b commit 1261aadebefc21f88cc7071613c0e59298412c8f
Showing with 2 additions and 5 deletions.
  1. +2 −5 watchdog/handler.go
@@ -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

0 comments on commit 1261aad

Please sign in to comment.