]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: mworker-prog: stop old programs in mworker_ext_launch_all
authorValentine Krasnobaeva <vkrasnobaeva@haproxy.com>
Thu, 10 Oct 2024 21:50:39 +0000 (23:50 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 16 Oct 2024 20:02:39 +0000 (22:02 +0200)
This patch is a part of series to reintroduce the program support in the new
master-worker architecture.

Now, after refactoring in master-worker mode it's the master process, who
stops workers forked before the reload. Current worker no longer sends USR1 or
TERM signals to the previous one after ports binding. This behaviour is kept
only for the standalone mode.

So, in case of programs, it's up to master process as well to stop programs,
which were launched before reload. Let's do this in mworker_ext_launch_all(),
just before starting the new programs.

src/mworker-prog.c

index 59c0fee1d9f38d68c4308b8a6401073886f6bfb0..8f745c7c1e7c295f44592bbe1965d5840394b389 100644 (file)
@@ -49,6 +49,10 @@ int mworker_ext_launch_all()
 
        /* find the right mworker_proc */
        list_for_each_entry_safe(child, tmp, &proc_list, list) {
+               /* need to stop progs, which were launched before reload */
+               if ((child->options & PROC_O_TYPE_PROG) && (child->options & PROC_O_LEAVING))
+                       kill(child->pid, oldpids_sig);
+
                if (child->reloads == 0 && (child->options & PROC_O_TYPE_PROG)) {
 
                        if (reexec && (!(child->options & PROC_O_START_RELOAD))) {