From: Jim Jagielski Date: Tue, 2 Feb 2016 14:56:30 +0000 (+0000) Subject: expose more worker status info in prep for making X-Git-Tag: 2.5.0-alpha~2224 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ad328cbcf4dc38cc309fcb2e40a551e9cf5cb59f;p=apache expose more worker status info in prep for making more dynamically changable git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1728142 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/proxy/mod_proxy.h b/modules/proxy/mod_proxy.h index c1d32bf354..c8817bd32e 100644 --- a/modules/proxy/mod_proxy.h +++ b/modules/proxy/mod_proxy.h @@ -310,7 +310,7 @@ struct proxy_conn_pool { #define PROXY_WORKER_IN_ERROR_FLAG 'E' #define PROXY_WORKER_HOT_STANDBY_FLAG 'H' #define PROXY_WORKER_FREE_FLAG 'F' -#define PROXY_WORKER_HC_FAIL_FLAG '#' +#define PROXY_WORKER_HC_FAIL_FLAG 'C' #define PROXY_WORKER_NOT_USABLE_BITMAP ( PROXY_WORKER_IN_SHUTDOWN | \ PROXY_WORKER_DISABLED | PROXY_WORKER_STOPPED | PROXY_WORKER_IN_ERROR | \ @@ -330,6 +330,8 @@ PROXY_WORKER_HC_FAIL ) #define PROXY_WORKER_IS_HCFAILED(f) ( (f)->s->status & PROXY_WORKER_HC_FAIL ) +#define PROXY_WORKER_IS(f, b) ( (f)->s->status & (b) ) + /* default worker retry timeout in seconds */ #define PROXY_WORKER_DEFAULT_RETRY 60 diff --git a/modules/proxy/mod_proxy_balancer.c b/modules/proxy/mod_proxy_balancer.c index e1d518f96b..1e2804250e 100644 --- a/modules/proxy/mod_proxy_balancer.c +++ b/modules/proxy/mod_proxy_balancer.c @@ -1339,18 +1339,7 @@ static int balancer_handler(request_rec *r) } /* Begin proxy_worker_stat */ ap_rputs(" ", r); - if (worker->s->status & PROXY_WORKER_DISABLED) - ap_rputs("Disabled", r); - else if (worker->s->status & PROXY_WORKER_IN_ERROR) - ap_rputs("Error", r); - else if (worker->s->status & PROXY_WORKER_STOPPED) - ap_rputs("Stopped", r); - else if (worker->s->status & PROXY_WORKER_HOT_STANDBY) - ap_rputs("Standby", r); - else if (PROXY_WORKER_IS_USABLE(worker)) - ap_rputs("OK", r); - else if (!PROXY_WORKER_IS_INITIALIZED(worker)) - ap_rputs("Uninitialized", r); + ap_rputs(ap_proxy_parse_wstatus(r->pool, worker), r); ap_rputs("\n", r); if ((worker->s->error_time > 0) && apr_rfc822_date(date, worker->s->error_time) == APR_SUCCESS) { ap_rvputs(r, " ", date, @@ -1601,11 +1590,15 @@ static int balancer_handler(request_rec *r) "Ignore Errors" "Draining Mode" "Disabled" - "Hot Standby\n", r); - create_radio("w_status_I", (PROXY_WORKER_IGNORE_ERRORS & wsel->s->status), r); - create_radio("w_status_N", (PROXY_WORKER_DRAIN & wsel->s->status), r); - create_radio("w_status_D", (PROXY_WORKER_DISABLED & wsel->s->status), r); - create_radio("w_status_H", (PROXY_WORKER_HOT_STANDBY & wsel->s->status), r); + "Hot Standby" + "HC Fail" + "Stopped\n", r); + create_radio("w_status_I", (PROXY_WORKER_IS(wsel, PROXY_WORKER_IGNORE_ERRORS)), r); + create_radio("w_status_N", (PROXY_WORKER_IS(wsel, PROXY_WORKER_DRAIN)), r); + create_radio("w_status_D", (PROXY_WORKER_IS(wsel, PROXY_WORKER_DISABLED)), r); + create_radio("w_status_H", (PROXY_WORKER_IS(wsel, PROXY_WORKER_HOT_STANDBY)), r); + create_radio("w_status_C", (PROXY_WORKER_IS(wsel, PROXY_WORKER_HC_FAIL)), r); + create_radio("w_status_S", (PROXY_WORKER_IS(wsel, PROXY_WORKER_STOPPED)), r); ap_rputs("\n", r); ap_rputs("\n", r); ap_rvputs(r, "\n