From: William Lallemand Date: Tue, 6 Nov 2018 16:37:13 +0000 (+0100) Subject: MINOR: mworker: displays more information when leaving X-Git-Tag: v1.9-dev6~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=18e52a8834a047e98f39828d55c573720d183ebc;p=thirdparty%2Fhaproxy.git MINOR: mworker: displays more information when leaving When a worker is leaving, we display the relative PID and the result of the strsignal() function if it was killed by a signal. --- diff --git a/src/haproxy.c b/src/haproxy.c index 741aa7a386..6c4fe4448c 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -815,32 +815,33 @@ restart_wait: LIST_DEL(&child->list); close(child->ipc_fd[0]); - free(child); break; } if (!children) { - ha_warning("Worker %d exited with code %d\n", exitpid, status); + ha_warning("Worker %d exited with code %d (%s)\n", exitpid, status, (status >= 128) ? strsignal(status - 128) : "Exit"); } else { /* check if exited child was in the current children list */ if (current_child(exitpid)) { - ha_alert("Current worker %d exited with code %d\n", exitpid, status); + ha_alert("Current worker #%d (%d) exited with code %d (%s)\n", child->relative_pid, exitpid, status, (status >= 128) ? strsignal(status - 128) : "Exit"); if (status != 0 && status != 130 && status != 143 && !(global.tune.options & GTUNE_NOEXIT_ONFAILURE)) { ha_alert("exit-on-failure: killing every workers with SIGTERM\n"); mworker_kill(SIGTERM); } } else { - ha_warning("Former worker %d exited with code %d\n", exitpid, status); + ha_warning("Former worker #%d (%d) exited with code %d (%s)\n", child->relative_pid, exitpid, status, (status >= 128) ? strsignal(status - 128) : "Exit"); delete_oldpid(exitpid); } } + free(child); + /* do it again to check if it was the last worker */ goto restart_wait; } /* Better rely on the system than on a list of process to check if it was the last one */ else if (exitpid == -1 && errno == ECHILD) { - ha_warning("All workers exited. Exiting... (%d)\n", status); + ha_warning("All workers exited. Exiting... (%d)\n", (exitcode > 0) ? exitcode : status); atexit_flag = 0; exit(status); /* parent must leave using the latest status code known */ }