mirror of
https://github.com/wavetermdev/waveterm.git
synced 2025-04-12 19:46:04 +02:00
let SIGHUP or stdin close trigger a shutdown
This commit is contained in:
parent
861cf8d126
commit
ee2fd8e98f
@ -52,6 +52,7 @@ var GlobalLock = &sync.Mutex{}
|
||||
var WSStateMap = make(map[string]*scws.WSState) // clientid -> WsState
|
||||
var GlobalAuthKey string
|
||||
var BuildTime = "0"
|
||||
var shutdownOnce sync.Once
|
||||
|
||||
type ClientActiveState struct {
|
||||
Fg bool `json:"fg"`
|
||||
@ -450,18 +451,10 @@ func stdinReadWatch() {
|
||||
for {
|
||||
_, err := os.Stdin.Read(buf)
|
||||
if err != nil {
|
||||
log.Printf("[prompt] stdin closed/error, shutting down: %v\n", err)
|
||||
sendTelemetryWrapper()
|
||||
log.Printf("[prompt] closing db connection\n")
|
||||
sstore.CloseDB()
|
||||
log.Printf("[prompt] *** shutting down local server\n")
|
||||
time.Sleep(1 * time.Second)
|
||||
syscall.Kill(syscall.Getpid(), syscall.SIGINT)
|
||||
doShutdown(fmt.Sprintf("stdin closed/error (%v)", err))
|
||||
break
|
||||
}
|
||||
}
|
||||
time.Sleep(10 * time.Second)
|
||||
syscall.Kill(syscall.Getpid(), syscall.SIGKILL)
|
||||
}
|
||||
|
||||
// ignore SIGHUP
|
||||
@ -470,11 +463,26 @@ func installSignalHandlers() {
|
||||
signal.Notify(sigCh, syscall.SIGHUP)
|
||||
go func() {
|
||||
for sig := range sigCh {
|
||||
fmt.Printf("[prompt] got signal %v (ignoring)\n", sig)
|
||||
doShutdown(fmt.Sprintf("got signal %v", sig))
|
||||
break
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func doShutdown(reason string) {
|
||||
shutdownOnce.Do(func() {
|
||||
log.Printf("[prompt] local server %v, start shutdown\n", reason)
|
||||
sendTelemetryWrapper()
|
||||
log.Printf("[prompt] closing db connection\n")
|
||||
sstore.CloseDB()
|
||||
log.Printf("[prompt] *** shutting down local server\n")
|
||||
time.Sleep(1 * time.Second)
|
||||
syscall.Kill(syscall.Getpid(), syscall.SIGINT)
|
||||
time.Sleep(5 * time.Second)
|
||||
syscall.Kill(syscall.Getpid(), syscall.SIGKILL)
|
||||
})
|
||||
}
|
||||
|
||||
func main() {
|
||||
scbase.BuildTime = BuildTime
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user