httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Trawick <traw...@gmail.com>
Subject Re: errors that cause proxy to move worker to error state
Date Tue, 31 Aug 2010 13:41:09 GMT
On Tue, Aug 31, 2010 at 9:33 AM, Andrew Oliver <acoliver@gmail.com> wrote:

> A 400 doesn't indicate a problem with the worker or the system behind
> the proxy, it indicates a problem with the client.


It could indicate that proxy is confused about what it sent though (in the
presence of some mod_proxy defect).  That's what bugs me about it.  That
doesn't seem to be a good time to keep using the connection.



>  Also marking a
> worker bad for say a 401 unauthorized would make all authentication
> impossible, a 403 or 404 would drain the pool every time someone asked
> for something they weren't allowed to have or that wasn't located
> where they thought it was (especially spiders like google).
>

Sure, other 40xs are fine.




>
> -Andy
>
> On Tue, Aug 31, 2010 at 9:26 AM, Jeff Trawick <trawick@gmail.com> wrote:
> > It looks like this is just 500 and 503.
> >
> > Why not 400, for example?
> >
> >         if (access_status == OK)
> >             break;
> >         else if (access_status == HTTP_INTERNAL_SERVER_ERROR) {
> >             /* Unrecoverable server error.
> >              * We can not failover to another worker.
> >              * Mark the worker as unusable if member of load balancer
> >              */
> >             if (balancer) {
> >                 worker->s->status |= PROXY_WORKER_IN_ERROR;
> >                 worker->s->error_time = apr_time_now();
> >             }
> >             break;
> >         }
> >         else if (access_status == HTTP_SERVICE_UNAVAILABLE) {
> >             /* Recoverable server error.
> >              * We can failover to another worker
> >              * Mark the worker as unusable if member of load balancer
> >              */
> >             if (balancer) {
> >                 worker->s->status |= PROXY_WORKER_IN_ERROR;
> >                 worker->s->error_time = apr_time_now();
> >             }
> >         }
> >         else {
> >             /* Unrecoverable error.
> >              * Return the origin status code to the client.
> >              */
> >             break;
> >         }
> >
> >
>



-- 
Born in Roswell... married an alien...

Mime
View raw message