We are experiencing intermittent "connect timeout" errors.  The remote
service is really "ok", but it still results in the worker being
disabled.

Setting the proxypass disable period using "retry=1" is not good
enough for the application I'm working with (given the number of
requests we do per second).

I couldn't find an option to turn this off completely, so I started
looking at the proxy source code.

I found PROXY_WORKER_IGNORE_ERRORS in proxy_util.c.  I'm not sure
where this should be set though.  Instead I just added a "FALSE" to
the if statment as follows:

   /*
    * Put the entire worker to error state if
    * the PROXY_WORKER_IGNORE_ERRORS flag is not set.
    * Altrough some connections may be alive
    * no further connections to the worker could be made
    */
   if (FALSE && !connected && PROXY_WORKER_IS_USABLE(worker) &&
       !(worker->s->status & PROXY_WORKER_IGNORE_ERRORS)) {
       worker->s->status |= PROXY_WORKER_IN_ERROR;
       worker->s->error_time = apr_time_now();
       ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,
           "ap_proxy_connect_backend disabling worker for (%s)",
           worker->hostname);
   }
   else {
       worker->s->error_time = 0;
       worker->s->retries = 0;
   }

I have 2 questions:
1) What are the negative implications of disabling this?
2) Is there a cleaner way to accomplish this?

Thanks,
Brian Hayward

Reply via email to