Since the fix "BUG/MINOR: mworker: don't exit with an ambiguous value"
we are leaving with a EXIT_SUCCESS upon a SIGINT.
We still need to quit with a SIGINT when a worker leaves with a SIGINT.
This is done this way because vtest expect a 130 during the process
stop, haproxy without mworker returns a 130, so it should be the same in
mworker mode.
This should be backported in 1.9, with the previous patch ("BUG/MINOR:
mworker: don't exit with an ambiguous value").
Code has moved, mworker_catch_sigchld() is in haproxy.c.
---
src/mworker.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/mworker.c b/src/mworker.c
index 73e392801..6b591d4eb 100644
--- a/src/mworker.c
+++ b/src/mworker.c
@@ -275,10 +275,11 @@ restart_wait:
if (status != 0 && status != 130 && status !=
143
&& !(global.tune.options &
GTUNE_NOEXIT_ONFAILURE)) {
ha_alert("exit-on-failure: killing
every processes with SIGTERM\n");
- if (exitcode < 0)
- exitcode = status;
mworker_kill(SIGTERM);
}
+ /* 0 & SIGTERM (143) are normal, but we should
report SIGINT (130) and other signals */
+ if (exitcode < 0 && status != 0 && status !=
143)
+ exitcode = status;
} else {
if (child->options & PROC_O_TYPE_WORKER) {
ha_warning("Former worker #%d (%d)
exited with code %d (%s)\n", child->relative_pid, exitpid, status, (status >=
128) ? strsignal(status - 128) : "Exit");
--
2.21.0