zhangmeng
2019-12-31 1a95565fc56e1e14c6c8244b0e505d533aa12f50
add restart
2个文件已修改
30 ■■■■■ 已修改文件
app/master/reaper.go 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/master/reaper.go
@@ -60,6 +60,8 @@
    pid := -1
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    cmd.SysProcAttr = &syscall.SysProcAttr{Pdeathsig: syscall.SIGTERM}
    err := cmd.Start()
    if err == nil {
        pid = cmd.Process.Pid
main.go
@@ -3,9 +3,13 @@
import (
    "analysis/logo"
    "analysis/util"
    "fmt"
    "os/exec"
    "os/signal"
    "runtime/debug"
    "strconv"
    "syscall"
    "time"
    "analysis/app/master"
    "analysis/app/slave"
@@ -107,6 +111,7 @@
    ret := false
    if role == roleMaster {
        defer dump(util.LogFile + "_dump_" + time.Now().Format("20060102150405"))
        setParamters()
        ret = master.Run(ctx, "./libcomm.so", configPath)
@@ -138,3 +143,26 @@
// viper.AddConfigPath("./")
// envString := ""
func dump(dumpFile string) {
    dumpErr := recover()
    if dumpErr == nil {
        return
    }
    f, err := os.Create(dumpFile)
    if err != nil {
        return
    }
    f.WriteString(fmt.Sprintf("panic:\r\n%v", dumpErr))
    f.WriteString("\r\n\nstack:\r\n")
    f.WriteString(string(debug.Stack()))
    f.Close()
    //////////////////////////////////////////////
    // restart master
    cmd := exec.Command(os.Args[0], os.Args[1:]...)
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    cmd.Start()
}