diff --git a/cmd/service.go b/cmd/service.go index 908c45676..67fdd5f18 100644 --- a/cmd/service.go +++ b/cmd/service.go @@ -20,6 +20,7 @@ import ( "os" "os/exec" "syscall" + "time" ) // Type of service signals currently supported. @@ -79,7 +80,6 @@ func (m *ServerMux) handleServiceSignals() error { // We are usually done here, close global service done channel. globalServiceDoneCh <- struct{}{} } - // Wait for SIGTERM in a go-routine. trapCh := signalTrap(os.Interrupt, syscall.SIGTERM) go func(trapCh <-chan bool) { @@ -102,7 +102,11 @@ func (m *ServerMux) handleServiceSignals() error { } runExitFn(nil) case serviceStop: - log.Println("Gracefully stopping... (press Ctrl+C again to force)") + log.Println("Received signal to exit.") + go func() { + time.Sleep(serverShutdownPoll + time.Millisecond*100) + log.Println("Waiting for active connections to terminate - press Ctrl+C to quit immediately.") + }() if err := m.Close(); err != nil { errorIf(err, "Unable to close server gracefully") }