mturk 2005/02/16 04:00:19 Modified: jk/native/common jk_lb_worker.c Log: Add traffic method for sticky sessions too. Revision Changes Path 1.54 +20 -6 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c Index: jk_lb_worker.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v retrieving revision 1.53 retrieving revision 1.54 diff -u -r1.53 -r1.54 --- jk_lb_worker.c 16 Feb 2005 09:25:35 -0000 1.53 +++ jk_lb_worker.c 16 Feb 2005 12:00:18 -0000 1.54 @@ -211,6 +211,9 @@ { unsigned int i; int total_factor = 0; + size_t mytraffic = 0; + size_t curmin = 0; + worker_record_t *candidate = NULL; /* First try to see if we have available candidate */ @@ -224,15 +227,26 @@ */ if (!p->lb_workers[i].s->in_error_state && !p->lb_workers[i].s->is_disabled) { - p->lb_workers[i].s->lb_value += p->lb_workers[i].s->lb_factor; - total_factor += p->lb_workers[i].s->lb_factor; - if (!candidate || p->lb_workers[i].s->lb_value > candidate->s->lb_value) - candidate = &p->lb_workers[i]; + if (p->lbmethod == JK_LB_BYREQUESTS) { + p->lb_workers[i].s->lb_value += p->lb_workers[i].s->lb_factor; + total_factor += p->lb_workers[i].s->lb_factor; + if (!candidate || p->lb_workers[i].s->lb_value > candidate->s->lb_value) + candidate = &p->lb_workers[i]; + } + else { + mytraffic = (p->lb_workers[i].s->transferred/p->lb_workers[i].s->lb_factor) + + (p->lb_workers[i].s->readed/p->lb_workers[i].s->lb_factor); + if (!candidate || mytraffic < curmin) { + candidate = &p->lb_workers[i]; + curmin = mytraffic; + } + } } } if (candidate) { - candidate->s->lb_value -= total_factor; + if (p->lbmethod == JK_LB_BYREQUESTS) + candidate->s->lb_value -= total_factor; } return candidate;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]