struct mworker_proc *current_child = NULL;
mworker_block_signals();
-#if defined(USE_SYSTEMD)
- if (global.tune.options & GTUNE_USE_SYSTEMD)
- sd_notify(0, "RELOADING=1");
-#endif
setenv("HAPROXY_MWORKER_REEXEC", "1", 1);
mworker_cleanup_proc();
child->reloads++;
}
+#if defined(USE_SYSTEMD)
+ if (global.tune.options & GTUNE_USE_SYSTEMD)
+ sd_notify(0, "RELOADING=1\nSTATUS=Reloading Configuration.\n");
+#endif
mworker_reexec();
}
static void mworker_loop()
{
-#if defined(USE_SYSTEMD)
- if (global.tune.options & GTUNE_USE_SYSTEMD)
- sd_notifyf(0, "READY=1\nMAINPID=%lu", (unsigned long)getpid());
-#endif
/* Busy polling makes no sense in the master :-) */
global.tune.options &= ~GTUNE_BUSY_POLLING;
usermsgs_clr(NULL);
ha_warning("Loading failure!\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_waitmode();
}
mworker_loop();
} else {
+#if defined(USE_SYSTEMD)
+ if (global.tune.options & GTUNE_USE_SYSTEMD)
+ sd_notifyf(0, "READY=1\nMAINPID=%lu\nSTATUS=Ready.\n", (unsigned long)getpid());
+#endif
/* if not in wait mode, reload in wait mode to free the memory */
ha_notice("Loading success.\n");
proc_self->failedreloads = 0; /* reset the number of failure */