Skip to content

Commit 1d5c2ef

Browse files
committed
More aggressive shutdown
1 parent 0b21469 commit 1d5c2ef

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

godemon.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,8 +411,23 @@ func (c *Cmd) Shutdown(s syscall.Signal) error {
411411
c.willShutdown = true
412412
c.Signal(s)
413413
debugf("Shutdown: signaled command, now waiting for termination")
414+
doneCh := make(chan struct{})
415+
defer close(doneCh)
416+
go func() {
417+
delay := 500 * time.Millisecond
418+
for {
419+
select {
420+
case <-time.After(delay):
421+
debugf("Command is still running - signaling again (pid %d)", c.Process.Pid)
422+
c.Signal(s)
423+
delay *= 2
424+
case <-doneCh:
425+
return
426+
}
427+
}
428+
}()
414429
err := c.Wait()
415-
debugf("Wait() error: %s", err)
430+
debugf("Wait() error: %v", err)
416431
return err
417432
}
418433

0 commit comments

Comments
 (0)