From 2bb07b913d09790172858b0491130bb517c75734 Mon Sep 17 00:00:00 2001 From: Valentine Krasnobaeva Date: Wed, 2 Oct 2024 14:12:11 +0200 Subject: [PATCH] MINOR: startup: rename and adapt reexec_on_failure Previously reexec_on_failure() was called in cases when the process has failed after reload, while it was parsing its configuration or it was trying to apply it. reexec_on_failure() has called mworker_reexec() and the master process has been reexecuted. With the new architecture in such cases there is no longer need to reexecute the master process after its reload again. It simply keeps the previous worker, forked before the reload, and it lets the new one to exit with an error. But we still need the code, which increments the number of failed reloads and which notifies systemd with new "Reload failed!" status. So, let's reuse and adapt for this reexec_on_failure() and let's rename it to on_new_child_failure(). --- include/haproxy/global.h | 1 + src/haproxy.c | 14 ++------------ 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/include/haproxy/global.h b/include/haproxy/global.h index 37a460223..17cfff3ae 100644 --- a/include/haproxy/global.h +++ b/include/haproxy/global.h @@ -66,6 +66,7 @@ void display_version(); void mworker_accept_wrapper(int fd); void mworker_reload(int hardreload); +void on_new_child_failure(void); /* to be used with warned and WARN_* */ static inline int already_warned(unsigned int warning) diff --git a/src/haproxy.c b/src/haproxy.c index 8d69ead64..e5c00687c 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -899,18 +899,10 @@ static void mworker_loop() /* * Reexec the process in failure mode, instead of exiting */ -void reexec_on_failure() +void on_new_child_failure() { struct mworker_proc *child; - if (!atexit_flag) - return; - - /* get the info of the children in the env */ - if (mworker_env_to_proc_list() < 0) { - exit(EXIT_FAILURE); - } - /* increment the number of failed reloads */ list_for_each_entry(child, &proc_list, list) { child->failedreloads++; @@ -921,15 +913,13 @@ void reexec_on_failure() usermsgs_clr(NULL); setenv("HAPROXY_LOAD_SUCCESS", "0", 1); - ha_warning("Loading failure!\n"); + ha_warning("Failed to load worker!\n"); #if defined(USE_SYSTEMD) /* the sd_notify API is not able to send a reload failure signal. So * the READY=1 signal still need to be sent */ if (global.tune.options & GTUNE_USE_SYSTEMD) sd_notify(0, "READY=1\nSTATUS=Reload failed!\n"); #endif - - mworker_reexec(0); } /*