handle sigchild
This commit is contained in:
parent
781d31d39f
commit
651fb09407
|
@ -37,13 +37,6 @@ static void dndStopDnode(int signum, void *info, void *ctx) {
|
|||
}
|
||||
}
|
||||
|
||||
static void dndHandleChild(int signum, void *info, void *ctx) {
|
||||
dInfo("sigchild received");
|
||||
if (global.pDnode != NULL) {
|
||||
dndHandleEvent(global.pDnode, DND_EVENT_CHILD);
|
||||
}
|
||||
}
|
||||
|
||||
static void dndSetSignalHandle() {
|
||||
taosSetSignal(SIGTERM, dndStopDnode);
|
||||
taosSetSignal(SIGHUP, dndStopDnode);
|
||||
|
@ -53,7 +46,7 @@ static void dndSetSignalHandle() {
|
|||
|
||||
if (!tsMultiProcess) {
|
||||
} else if (global.ntype == DNODE || global.ntype == NODE_MAX) {
|
||||
taosSetSignal(SIGCHLD, dndHandleChild);
|
||||
taosIgnSignal(SIGCHLD);
|
||||
} else {
|
||||
taosKillChildOnParentStopped();
|
||||
}
|
||||
|
|
|
@ -128,7 +128,7 @@ static int32_t dndNewProc(SMgmtWrapper *pWrapper, ENodeType n) {
|
|||
}
|
||||
|
||||
pWrapper->procId = pid;
|
||||
dInfo("node:%s, run in new process, pid:%d", pWrapper->name, pid);
|
||||
dInfo("node:%s, continue running in new process:%d", pWrapper->name, pid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -263,13 +263,13 @@ static int32_t dndRunInParentProcess(SDnode *pDnode) {
|
|||
if (!pWrapper->required) continue;
|
||||
if (pDnode->ntype == NODE_MAX) continue;
|
||||
|
||||
if (pWrapper->procId != 0 && !taosProcExists(pWrapper->procId)) {
|
||||
dInfo("node:%s, process not exist, pid:%d", pWrapper->name, pWrapper->procId);
|
||||
if (pWrapper->procId <= 0 || !taosProcExists(pWrapper->procId)) {
|
||||
dInfo("node:%s, process:%d does not exist or is killed and needs to be restarted", pWrapper->name, pWrapper->procId);
|
||||
dndNewProc(pWrapper, n);
|
||||
}
|
||||
|
||||
taosMsleep(100);
|
||||
}
|
||||
|
||||
taosMsleep(100);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -23,6 +23,9 @@ int32_t taosNewProc(char **args) {
|
|||
int32_t pid = fork();
|
||||
if (pid == 0) {
|
||||
args[0] = tsProcPath;
|
||||
close(STDIN_FILENO);
|
||||
close(STDOUT_FILENO);
|
||||
close(STDERR_FILENO);
|
||||
return execvp(tsProcPath, args);
|
||||
} else {
|
||||
return pid;
|
||||
|
|
Loading…
Reference in New Issue