You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Ruediger Pluem <rp...@apache.org> on 2016/01/19 17:09:13 UTC
Re: svn commit: r1725523 - in /httpd/httpd/trunk/modules/proxy:
mod_proxy.h mod_proxy_hcheck.c
On 01/19/2016 03:14 PM, jim@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
Re: svn commit: r1725523 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.h mod_proxy_hcheck.c
Posted by Jim Jagielski <ji...@jaguNET.com>.
THX!
> On Jan 21, 2016, at 10:12 AM, Rainer Jung <ra...@kippdata.de> wrote:
>
> Hi Jim,
>
> Am 21.01.2016 um 15:35 schrieb Jim Jagielski:
>> BTW, do you have pointers on how to use your "new" Coccinelle/spatch
>> script to assign AH log numbers?
>
> first I had to build OCAML and coccinelle (which provides spatch) on Solaris. As usual not much fun. I assume, you can find ready-to-go packages for those in your favorite Linux package repos. So I spare you those details.
>
> Then I followed the simple description in docs/log-message-tags/README, especially running
>
> DIR=docs/log-message-tags
> spatch -sp_file $DIR/find-messages.cocci \
> -in_place \
> -macro_file $DIR/macros.h FILESTOCHECK
>
> where FILESTOCHECK is the list of C files you want spatch to work on.
>
> The spatch patch (the cocci file) adds "APLOGNO()," to all eligible log statements it identifies. To finally replace the empty "APLOGNO()," with a real number, I ran
>
> perl docs/log-message-tags/update-log-msg-tags FILESTOFIX
>
> It will put real numbers in and update docs/log-message-tags/next-number.
>
> There's also a make task, which I didn't use.
>
> If your version of spatch (coccinelle) isn't build with pcre support (mine on Solaris wasn't) you need to fix the docs/log-message-tags/find-messages.cocci file. In all lines defining a regexp (look for "=~") replace all "|" by "\|" and all "(" resp. ")" with "\(" and "\)" because that is the default regexp style in ocaml.
>
> HTH!
>
> Regards,
>
> Rainer
>
Re: svn commit: r1725523 - in /httpd/httpd/trunk/modules/proxy:
mod_proxy.h mod_proxy_hcheck.c
Posted by Rainer Jung <ra...@kippdata.de>.
Hi Jim,
Am 21.01.2016 um 15:35 schrieb Jim Jagielski:
> BTW, do you have pointers on how to use your "new" Coccinelle/spatch
> script to assign AH log numbers?
first I had to build OCAML and coccinelle (which provides spatch) on
Solaris. As usual not much fun. I assume, you can find ready-to-go
packages for those in your favorite Linux package repos. So I spare you
those details.
Then I followed the simple description in docs/log-message-tags/README,
especially running
DIR=docs/log-message-tags
spatch -sp_file $DIR/find-messages.cocci \
-in_place \
-macro_file $DIR/macros.h FILESTOCHECK
where FILESTOCHECK is the list of C files you want spatch to work on.
The spatch patch (the cocci file) adds "APLOGNO()," to all eligible log
statements it identifies. To finally replace the empty "APLOGNO()," with
a real number, I ran
perl docs/log-message-tags/update-log-msg-tags FILESTOFIX
It will put real numbers in and update docs/log-message-tags/next-number.
There's also a make task, which I didn't use.
If your version of spatch (coccinelle) isn't build with pcre support
(mine on Solaris wasn't) you need to fix the
docs/log-message-tags/find-messages.cocci file. In all lines defining a
regexp (look for "=~") replace all "|" by "\|" and all "(" resp. ")"
with "\(" and "\)" because that is the default regexp style in ocaml.
HTH!
Regards,
Rainer
Re: svn commit: r1725523 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.h mod_proxy_hcheck.c
Posted by Jim Jagielski <ji...@jaguNET.com>.
Thx!
BTW, do you have pointers on how to use your "new" Coccinelle/spatch
script to assign AH log numbers?
> On Jan 19, 2016, at 2:44 PM, Rainer Jung <ra...@kippdata.de> wrote:
>
> Am 19.01.2016 um 20:02 schrieb Jim Jagielski:
>> Ahhh... yeah, I guess updating all the usages to do
>> that makes sense.
>
> Done in r1725602.
>
>>> On Jan 19, 2016, at 1:59 PM, Ruediger Pluem <rp...@apache.org> wrote:
>>>
>>>
>>>
>>> On 01/19/2016 06:45 PM, Jim Jagielski wrote:
>>>>
>>>>> On Jan 19, 2016, at 11:09 AM, Ruediger Pluem <rp...@apache.org> wrote:
>>>>>
>>>>>> + } 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?
>>>>>
>>>>
>>>> ??
>>>>
>>>> Using ap_proxy_set_wstatus() is the standard method for setting
>>>> or clearing the bits in the worker status.
>>>>
>>>
>>> Sorry for being confusing I meant using PROXY_WORKER_HC_FAIL_FLAG instead of '#'.
>>>
>>> Regards
>>>
>>> Rüdiger
Re: svn commit: r1725523 - in /httpd/httpd/trunk/modules/proxy:
mod_proxy.h mod_proxy_hcheck.c
Posted by Rainer Jung <ra...@kippdata.de>.
Am 19.01.2016 um 20:02 schrieb Jim Jagielski:
> Ahhh... yeah, I guess updating all the usages to do
> that makes sense.
Done in r1725602.
>> On Jan 19, 2016, at 1:59 PM, Ruediger Pluem <rp...@apache.org> wrote:
>>
>>
>>
>> On 01/19/2016 06:45 PM, Jim Jagielski wrote:
>>>
>>>> On Jan 19, 2016, at 11:09 AM, Ruediger Pluem <rp...@apache.org> wrote:
>>>>
>>>>> + } 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?
>>>>
>>>
>>> ??
>>>
>>> Using ap_proxy_set_wstatus() is the standard method for setting
>>> or clearing the bits in the worker status.
>>>
>>
>> Sorry for being confusing I meant using PROXY_WORKER_HC_FAIL_FLAG instead of '#'.
>>
>> Regards
>>
>> Rüdiger
Re: svn commit: r1725523 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.h mod_proxy_hcheck.c
Posted by Jim Jagielski <ji...@jaguNET.com>.
Ahhh... yeah, I guess updating all the usages to do
that makes sense.
thx!
> On Jan 19, 2016, at 1:59 PM, Ruediger Pluem <rp...@apache.org> wrote:
>
>
>
> On 01/19/2016 06:45 PM, Jim Jagielski wrote:
>>
>>> On Jan 19, 2016, at 11:09 AM, Ruediger Pluem <rp...@apache.org> wrote:
>>>
>>>> + } 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?
>>>
>>
>> ??
>>
>> Using ap_proxy_set_wstatus() is the standard method for setting
>> or clearing the bits in the worker status.
>>
>
> Sorry for being confusing I meant using PROXY_WORKER_HC_FAIL_FLAG instead of '#'.
>
> Regards
>
> Rüdiger
Re: svn commit: r1725523 - in /httpd/httpd/trunk/modules/proxy:
mod_proxy.h mod_proxy_hcheck.c
Posted by Ruediger Pluem <rp...@apache.org>.
On 01/19/2016 06:45 PM, Jim Jagielski wrote:
>
>> On Jan 19, 2016, at 11:09 AM, Ruediger Pluem <rp...@apache.org> wrote:
>>
>>> + } 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?
>>
>
> ??
>
> Using ap_proxy_set_wstatus() is the standard method for setting
> or clearing the bits in the worker status.
>
Sorry for being confusing I meant using PROXY_WORKER_HC_FAIL_FLAG instead of '#'.
Regards
Rüdiger
Re: svn commit: r1725523 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.h mod_proxy_hcheck.c
Posted by Jim Jagielski <ji...@jaguNET.com>.
> On Jan 19, 2016, at 11:09 AM, Ruediger Pluem <rp...@apache.org> wrote:
>
>> + } 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?
>
??
Using ap_proxy_set_wstatus() is the standard method for setting
or clearing the bits in the worker status.