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]

Reply via email to