MCPcopy Create free account
hub / github.com/apache/httpd / force_recovery

Function force_recovery

modules/proxy/mod_proxy_balancer.c:426–460  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

424}
425
426static void force_recovery(proxy_balancer *balancer, server_rec *s)
427{
428 int i;
429 int ok = 0;
430 proxy_worker **worker;
431
432 worker = (proxy_worker **)balancer->workers->elts;
433 for (i = 0; i < balancer->workers->nelts; i++, worker++) {
434 if (!((*worker)->s->status & PROXY_WORKER_IN_ERROR)) {
435 ok = 1;
436 break;
437 }
438 else {
439 /* Try if we can recover */
440 ap_proxy_retry_worker_fn("BALANCER", *worker, s);
441 if (!((*worker)->s->status & PROXY_WORKER_IN_ERROR)) {
442 ok = 1;
443 break;
444 }
445 }
446 }
447 if (!ok && balancer->s->forcerecovery) {
448 /* If all workers are in error state force the recovery.
449 */
450 worker = (proxy_worker **)balancer->workers->elts;
451 for (i = 0; i < balancer->workers->nelts; i++, worker++) {
452 ++(*worker)->s->retries;
453 (*worker)->s->status &= ~PROXY_WORKER_IN_ERROR;
454 ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, APLOGNO(01165)
455 "%s: Forcing recovery for worker (%s:%d)",
456 balancer->s->name, (*worker)->s->hostname_ex,
457 (int)(*worker)->s->port);
458 }
459 }
460}
461
462static apr_status_t decrement_busy_count(void *worker_)
463{

Callers 1

Calls 1

ap_log_errorFunction · 0.50

Tested by

no test coverage detected