]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: startup: rename and adapt reexec_on_failure
authorValentine Krasnobaeva <vkrasnobaeva@haproxy.com>
Wed, 2 Oct 2024 12:12:11 +0000 (14:12 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 16 Oct 2024 20:02:39 +0000 (22:02 +0200)
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
src/haproxy.c

index 37a460223ab565762e22a044e59f834253e9db3b..17cfff3ae931431255f9a0e6c64d1a2a89017b32 100644 (file)
@@ -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)
index 8d69ead64e7ccce23779376da191099641695d8a..e5c00687cdd7716e82bd9abdc12064a93b9413c2 100644 (file)
@@ -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);
 }
 
 /*