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]