프로세스 재시작 지원

This commit is contained in:
2023-06-27 09:44:56 +09:00
parent 72e94ccfc3
commit 01b4782e78
7 changed files with 68 additions and 61 deletions

View File

@ -274,15 +274,22 @@ func NewClient() (HoustonClient, error) {
var newprocs []*procmeta
for _, proc := range hc.childProcs {
if proc.cmd == exited {
if proc.state == protos.ProcessState_Running {
go func(cmd *exec.Cmd) {
if err := cmd.Process.Signal(syscall.SIGTERM); err != nil {
cmd.Process.Signal(os.Kill)
if proc.state == protos.ProcessState_Running || proc.state == protos.ProcessState_Restart {
go func(proc *procmeta) {
if err := proc.cmd.Process.Signal(syscall.SIGTERM); err != nil {
proc.cmd.Process.Signal(os.Kill)
}
cmd.Wait()
cmd.Process.Release()
logger.Println("abnormal termination of process :", cmd.Args)
}(proc.cmd)
proc.cmd.Wait()
proc.cmd.Process.Release()
if proc.state == protos.ProcessState_Restart {
hc.startChildProcess(&shared.StartProcessRequest{
Version: proc.version,
Name: proc.name,
Args: proc.cmd.Args,
}, op)
}
}(proc)
}
} else {
newprocs = append(newprocs, proc)