Author: rjung Date: Wed Sep 13 11:18:37 2006 New Revision: 443055 URL: http://svn.apache.org/viewvc?view=rev&rev=443055 Log: - Move forced recovery from process maintain to global maintain - Count non error workers during usual recovery and use result to decide forced recovery
Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c?view=diff&rev=443055&r1=443054&r2=443055 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c Wed Sep 13 11:18:37 2006 @@ -283,13 +283,15 @@ * If the worker is in ok state and got no requests * since the last global maintenance, we mark its * state as not available. + * Return the number of workers not in error state. */ -static void recover_workers(lb_worker_t *p, +static int recover_workers(lb_worker_t *p, jk_uint64_t curmax, time_t now, jk_logger_t *l) { unsigned int i; + int non_error = 0; int elapsed; worker_record_t *w = NULL; JK_TRACE_ENTER(l); @@ -312,9 +314,11 @@ if (p->lbmethod != JK_LB_METHOD_BUSYNESS) w->s->lb_value = curmax; w->s->state = JK_LB_STATE_RECOVER; + non_error++; } } else { + non_error++; if (w->s->state == JK_LB_STATE_OK && w->s->elected == w->s->elected_snapshot) w->s->state = JK_LB_STATE_NA; @@ -323,6 +327,7 @@ } JK_TRACE_EXIT(l); + return non_error; } static int force_recovery(lb_worker_t *p, @@ -407,17 +412,11 @@ "decay with 2^%d", JK_LB_DECAY_MULT * delta / lb->maintain_time); curmax = decay_load(lb, JK_LB_DECAY_MULT * delta / lb->maintain_time, l); - recover_workers(lb, curmax, now, l); - } - - for (i = 0; i < lb->num_of_workers; i++) { - if (lb->lb_workers[i].s->state != JK_LB_STATE_ERROR) { - ++n; + if (!recover_workers(lb, curmax, now, l)) { + force_recovery(lb, l); } } - if (!n) { - force_recovery(lb, l); - } + jk_shm_unlock(); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]