https://issues.apache.org/bugzilla/show_bug.cgi?id=46109

           Summary: The reply_timeout counter doesn't decay, when Busyness
                    is specified to lb method.
           Product: Tomcat Connectors
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P3
         Component: Common
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: [EMAIL PROTECTED]


Created an attachment (id=22784)
 --> (https://issues.apache.org/bugzilla/attachment.cgi?id=22784)
patch to decay_load

The reply_timeout counter is not cleared by 0 when the worker becomes force
recovery state.

In addition, the counter doesn't decay because the following codes are not
executed when Busyness is specified to method directive.
Therefore, it is easy to become an error state.
-----jk_lb_worker.c
600:    if (p->lbmethod != JK_LB_METHOD_BUSYNESS) {
601:        for (i = 0; i < p->num_of_workers; i++) {
602:            lb_sub_worker_t *w = &p->lb_workers[i];
603:            ajp_worker_t *aw = (ajp_worker_t *)w->worker->worker_private;
604:            w->s->lb_value >>= exponent;
605:            if (w->s->lb_value > curmax) {
606:                curmax = w->s->lb_value;
607:            }
608:            aw->s->reply_timeouts >>= exponent;
609:        }
610:    }
---

I think that to decay the counter is nice idea for Busyness method as well as
in the case of other methods. 
How about as follows?

Index: mod_jk-head/native/common/jk_lb_worker.c
===================================================================
--- mod_jk-head/native/common/jk_lb_worker.c    (revision 708408 ( 
https://svn.apache.org/viewcvs.cgi?view=rev&rev=708408 ))
+++ mod_jk-head/native/common/jk_lb_worker.c    (working copy)
@@ -597,16 +597,16 @@
     jk_uint64_t curmax = 0;

     JK_TRACE_ENTER(l);
-    if (p->lbmethod != JK_LB_METHOD_BUSYNESS) {
-        for (i = 0; i < p->num_of_workers; i++) {
-            lb_sub_worker_t *w = &p->lb_workers[i];
-            ajp_worker_t *aw = (ajp_worker_t *)w->worker->worker_private;
+    for (i = 0; i < p->num_of_workers; i++) {
+        lb_sub_worker_t *w = &p->lb_workers[i];
+        ajp_worker_t *aw = (ajp_worker_t *)w->worker->worker_private;
+        if (p->lbmethod != JK_LB_METHOD_BUSYNESS) {
             w->s->lb_value >>= exponent;
             if (w->s->lb_value > curmax) {
                 curmax = w->s->lb_value;
             }
-            aw->s->reply_timeouts >>= exponent;
         }
+        aw->s->reply_timeouts >>= exponent;
     }
     JK_TRACE_EXIT(l);

regards.


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to