MINOR: startup: change session/process group settings
Change the way the process groups are set. Indeed setsid() was called for every processes which caused the worker to have a different process group than the master. This patch behave in a better way: - In daemon mode only, each child do a setsid() - In master worker + daemon mode, the setsid() is done in the master before forking the children - In any foreground mode, we don't do a setsid() Could be backported in 1.8 but the master-worker mode is mostly used with systemd which rely on cgroups so that won't affect much people.
This commit is contained in:
parent
70d318ccb7
commit
bfd8eb5909
|
@ -2775,10 +2775,10 @@ int main(int argc, char **argv)
|
|||
ha_alert("[%s.main()] Cannot fork.\n", argv[0]);
|
||||
protocol_unbind_all();
|
||||
exit(1); /* there has been an error */
|
||||
}
|
||||
/* parent leave to daemonize */
|
||||
if (ret > 0)
|
||||
} else if (ret > 0) { /* parent leave to daemonize */
|
||||
exit(0);
|
||||
} else /* change the process group ID in the child (master process) */
|
||||
setsid();
|
||||
}
|
||||
|
||||
if (global.mode & MODE_MWORKER) {
|
||||
|
@ -2880,7 +2880,6 @@ int main(int argc, char **argv)
|
|||
|
||||
global.mode &= ~MODE_VERBOSE;
|
||||
global.mode |= MODE_QUIET; /* ensure that we won't say anything from now */
|
||||
setsid();
|
||||
}
|
||||
|
||||
mworker_wait();
|
||||
|
@ -3005,7 +3004,8 @@ int main(int argc, char **argv)
|
|||
global.mode |= MODE_QUIET; /* ensure that we won't say anything from now */
|
||||
}
|
||||
pid = getpid(); /* update child's pid */
|
||||
setsid();
|
||||
if (!(global.mode & MODE_MWORKER)) /* in mworker mode we don't want a new pgid for the children */
|
||||
setsid();
|
||||
fork_poller();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue