On 01/19/2016 03:14 PM, j...@apache.org wrote:
> Author: jim
> Date: Tue Jan 19 14:14:27 2016
> New Revision: 1725523
> 
> URL: http://svn.apache.org/viewvc?rev=1725523&view=rev
> Log:
> For OPTIONS and HEAD, only 2xx and 3xx are considered "passing"
> (until I implement the conditions expr testing)... honor
> the pass/fail count and LOG_INFO when the health check enables
> or disables a backend worker.
> 
> Modified:
>     httpd/httpd/trunk/modules/proxy/mod_proxy.h
>     httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c
> 

> 
> Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c?rev=1725523&r1=1725522&r2=1725523&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c (original)
> +++ httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c Tue Jan 19 14:14:27 
> 2016

> @@ -647,10 +662,29 @@ static void hc_check(sctx_t *ctx, apr_po
>                           "Somehow tried to use unimplemented hcheck method: 
> %d", (int)worker->s->method);
>          return;
>      }
> -    /* TODO Honor fails and passes */
> -    ap_proxy_set_wstatus('#', (rv == APR_SUCCESS ? 0 : 1), worker);
> -    if (rv != APR_SUCCESS) {
> -        worker->s->error_time = now;
> +    /* what state are we in ? */
> +    if (PROXY_WORKER_IS_HCFAILED(worker)) {
> +        if (rv == APR_SUCCESS) {
> +            worker->s->pcount += 1;
> +            if (worker->s->pcount >= worker->s->passes) {
> +                ap_proxy_set_wstatus('#', 0, worker);
> +                worker->s->pcount = 0;
> +                ap_log_error(APLOG_MARK, APLOG_INFO, 0, s, APLOGNO()
> +                             "Health check re-enabling %s", worker->s->name);
> +
> +            }
> +        }
> +    } else {
> +        if (rv != APR_SUCCESS) {
> +            worker->s->error_time = now;
> +            worker->s->fcount += 1;
> +            if (worker->s->fcount >= worker->s->fails) {
> +                ap_proxy_set_wstatus('#', 1, worker);

Wouldn't it be better to use the define from mod_proxy.h instead of the literal?

> +                worker->s->fcount = 0;
> +                ap_log_error(APLOG_MARK, APLOG_INFO, 0, s, APLOGNO()
> +                             "Health check disabling %s", worker->s->name);
> +            }
> +        }
>      }
>      worker->s->updated = now;
>  }
> 
> 
> 


Regards

RĂ¼diger

Reply via email to