From 846015fcc26c1e0e9a81627400ea15e05c4af565 Mon Sep 17 00:00:00 2001 From: Brian Pane Date: Fri, 12 Apr 2002 04:24:44 +0000 Subject: [PATCH] switch back to the worker's version of the pod code git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94616 13f79535-47bb-0310-9956-ffa450edef68 --- server/mpm/experimental/leader/Makefile.in | 2 +- server/mpm/experimental/leader/leader.c | 41 +++++++++------------- server/mpm/experimental/leader/mpm.h | 1 - 3 files changed, 17 insertions(+), 27 deletions(-) diff --git a/server/mpm/experimental/leader/Makefile.in b/server/mpm/experimental/leader/Makefile.in index 03f1765edd..acd46f357b 100644 --- a/server/mpm/experimental/leader/Makefile.in +++ b/server/mpm/experimental/leader/Makefile.in @@ -1,5 +1,5 @@ LTLIBRARY_NAME = libleader.la -LTLIBRARY_SOURCES = leader.c +LTLIBRARY_SOURCES = leader.c pod.c include $(top_srcdir)/build/ltlib.mk diff --git a/server/mpm/experimental/leader/leader.c b/server/mpm/experimental/leader/leader.c index 4320dd64d6..2b5def0034 100644 --- a/server/mpm/experimental/leader/leader.c +++ b/server/mpm/experimental/leader/leader.c @@ -103,6 +103,7 @@ #include "http_connection.h" #include "ap_mpm.h" #include "mpm_common.h" +#include "pod.h" #include "ap_listen.h" #include "scoreboard.h" #include "mpm_default.h" @@ -337,7 +338,6 @@ static apr_status_t worker_stack_awaken_next(worker_stack *stack) static worker_stack *idle_worker_stack; #define ST_INIT 0 -#define ST_RESTART 0 #define ST_GRACEFUL 1 #define ST_UNGRACEFUL 2 @@ -1171,33 +1171,24 @@ static void child_main(int child_num_arg) /* see if termination was triggered while we slept */ switch(terminate_mode) { case ST_GRACEFUL: - rv = ST_GRACEFUL; + rv = AP_GRACEFUL; break; case ST_UNGRACEFUL: - rv = ST_RESTART; + rv = AP_RESTART; break; } } - if (rv == ST_GRACEFUL || rv == ST_RESTART) { - /* make sure the start thread has finished; - * signal_threads() and join_workers depend on that - */ - join_start_thread(start_thread_id); - signal_threads(rv == ST_GRACEFUL ? ST_GRACEFUL : ST_UNGRACEFUL); - break; - } } - if (rv == ST_GRACEFUL) { - /* A terminating signal was received. Now join each of the - * workers to clean them up. - * If the worker already exited, then the join frees - * their resources and returns. - * If the worker hasn't exited, then this blocks until - * they have (then cleans up). - */ - join_workers(threads); - } + signal_threads(ST_GRACEFUL); + /* A terminating signal was received. Now join each of the + * workers to clean them up. + * If the worker already exited, then the join frees + * their resources and returns. + * If the worker hasn't exited, then this blocks until + * they have (then cleans up). + */ + join_workers(threads); } free(threads); @@ -1379,7 +1370,7 @@ static void perform_idle_server_maintenance(void) if (idle_thread_count > max_spare_threads) { /* Kill off one child */ - ap_mpm_pod_signal(pod); + ap_mpm_pod_signal(pod, TRUE); idle_spawn_rate = 1; } else if (idle_thread_count < min_spare_threads) { @@ -1609,7 +1600,7 @@ int ap_mpm_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s) * (By "gracefully" we don't mean graceful in the same sense as * "apachectl graceful" where we allow old connections to finish.) */ - ap_mpm_pod_killpg(pod, ap_daemons_limit); + ap_mpm_pod_killpg(pod, ap_daemons_limit, FALSE); ap_reclaim_child_processes(1); /* Start with SIGTERM */ if (!child_fatal) { @@ -1647,7 +1638,7 @@ int ap_mpm_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s) ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_NOTICE, 0, ap_server_conf, AP_SIG_GRACEFUL_STRING " received. Doing graceful restart"); /* wake up the children...time to die. But we'll have more soon */ - ap_mpm_pod_killpg(pod, ap_daemons_limit); + ap_mpm_pod_killpg(pod, ap_daemons_limit, TRUE); /* This is mostly for debugging... so that we know what is still @@ -1660,7 +1651,7 @@ int ap_mpm_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s) * and a SIGHUP, we may as well use the same signal, because some user * pthreads are stealing signals from us left and right. */ - ap_mpm_pod_killpg(pod, ap_daemons_limit); + ap_mpm_pod_killpg(pod, ap_daemons_limit, FALSE); ap_reclaim_child_processes(1); /* Start with SIGTERM */ ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_NOTICE, 0, ap_server_conf, diff --git a/server/mpm/experimental/leader/mpm.h b/server/mpm/experimental/leader/mpm.h index 5e7afa8fde..38074f9361 100644 --- a/server/mpm/experimental/leader/mpm.h +++ b/server/mpm/experimental/leader/mpm.h @@ -76,7 +76,6 @@ #define AP_MPM_WANT_SET_ACCEPT_LOCK_MECH #define AP_MPM_DISABLE_NAGLE_ACCEPTED_SOCK -#define AP_MPM_USES_POD 1 #define MPM_CHILD_PID(i) (ap_scoreboard_image->parent[i].pid) #define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0) #define MPM_ACCEPT_FUNC unixd_accept -- 2.40.0