You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2007/01/27 15:41:06 UTC
svn commit: r500537 - in /tomcat/connectors/trunk/jk:
native/common/jk_lb_worker.c native/common/jk_lb_worker.h
native/common/jk_status.c xdocs/miscellaneous/changelog.xml
xdocs/reference/status.xml xdocs/reference/workers.xml
Author: rjung
Date: Sat Jan 27 06:41:05 2007
New Revision: 500537
URL: http://svn.apache.org/viewvc?view=rev&rev=500537
Log:
Do not try to recover load balancer sub workers
multiple times in parallel (except when doing forced recovery).
Use additional runtime states "PROBE" and "FORCED".
Typical state cycles are: OK->ERROR->RECOVER->PROBE->OK/ERROR.
and OK->ERROR->FORCED->OK/ERROR.
Modified:
tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c
tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h
tomcat/connectors/trunk/jk/native/common/jk_status.c
tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
tomcat/connectors/trunk/jk/xdocs/reference/status.xml
tomcat/connectors/trunk/jk/xdocs/reference/workers.xml
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=500537&r1=500536&r2=500537
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c Sat Jan 27 06:41:05 2007
@@ -40,8 +40,8 @@
* The load balancing code in this
*/
-#define JK_WORKER_USABLE(w) ((w)->state != JK_LB_STATE_ERROR && (w)->state != JK_LB_STATE_BUSY && (w)->activation != JK_LB_ACTIVATION_STOPPED && (w)->activation != JK_LB_ACTIVATION_DISABLED)
-#define JK_WORKER_USABLE_STICKY(w) ((w)->state != JK_LB_STATE_ERROR && (w)->activation != JK_LB_ACTIVATION_STOPPED)
+#define JK_WORKER_USABLE(w) ((w)->state != JK_LB_STATE_ERROR && (w)->state != JK_LB_STATE_PROBE && (w)->state != JK_LB_STATE_BUSY && (w)->activation != JK_LB_ACTIVATION_STOPPED && (w)->activation != JK_LB_ACTIVATION_DISABLED)
+#define JK_WORKER_USABLE_STICKY(w) ((w)->state != JK_LB_STATE_ERROR && (w)->state != JK_LB_STATE_PROBE && (w)->activation != JK_LB_ACTIVATION_STOPPED)
static const char *lb_locking_type[] = {
JK_LB_LOCK_TEXT_OPTIMISTIC,
@@ -65,6 +65,8 @@
JK_LB_STATE_TEXT_RECOVER,
JK_LB_STATE_TEXT_BUSY,
JK_LB_STATE_TEXT_ERROR,
+ JK_LB_STATE_TEXT_FORCE,
+ JK_LB_STATE_TEXT_PROBE,
"unknown",
NULL
};
@@ -172,6 +174,10 @@
return JK_LB_STATE_BUSY;
else if (*v == 'e' || *v == 'E' || *v == '4')
return JK_LB_STATE_ERROR;
+ else if (*v == 'f' || *v == 'F' || *v == '5')
+ return JK_LB_STATE_FORCE;
+ else if (*v == 'p' || *v == 'P' || *v == '6')
+ return JK_LB_STATE_PROBE;
else
return JK_LB_STATE_DEF;
}
@@ -446,7 +452,7 @@
jk_log(l, JK_LOG_INFO,
"worker %s is marked for recovery",
w->s->name);
- w->s->state = JK_LB_STATE_RECOVER;
+ w->s->state = JK_LB_STATE_FORCE;
forced++;
}
}
@@ -857,6 +863,9 @@
int retry_wait = JK_LB_MIN_RETRY_WAIT;
s->route = rec->r;
prec = rec;
+
+ if (rec->s->state == JK_LB_STATE_RECOVER)
+ rec->s->state = JK_LB_STATE_PROBE;
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h?view=diff&rev=500537&r1=500536&r2=500537
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h Sat Jan 27 06:41:05 2007
@@ -62,13 +62,17 @@
#define JK_LB_STATE_RECOVER (2)
#define JK_LB_STATE_BUSY (3)
#define JK_LB_STATE_ERROR (4)
+#define JK_LB_STATE_FORCE (5)
+#define JK_LB_STATE_PROBE (6)
#define JK_LB_STATE_DEF (JK_LB_STATE_NA)
#define JK_LB_STATE_TEXT_NA ("N/A")
#define JK_LB_STATE_TEXT_OK ("OK")
#define JK_LB_STATE_TEXT_RECOVER ("REC")
#define JK_LB_STATE_TEXT_BUSY ("BSY")
#define JK_LB_STATE_TEXT_ERROR ("ERR")
-#define JK_LB_STATE_TEXT_MAX (JK_LB_STATE_ERROR)
+#define JK_LB_STATE_TEXT_FORCE ("FRC")
+#define JK_LB_STATE_TEXT_PROBE ("PRB")
+#define JK_LB_STATE_TEXT_MAX (JK_LB_STATE_PROBE)
#define JK_LB_STATE_TEXT_DEF (JK_LB_STATE_TEXT_NA)
#define JK_LB_ACTIVATION_ACTIVE (0)
#define JK_LB_ACTIVATION_DISABLED (1)
Modified: tomcat/connectors/trunk/jk/native/common/jk_status.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_status.c?view=diff&rev=500537&r1=500536&r2=500537
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_status.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_status.c Sat Jan 27 06:41:05 2007
@@ -595,6 +595,12 @@
case JK_LB_STATE_RECOVER:
mask &= JK_STATUS_MASK_RECOVER;
break;
+ case JK_LB_STATE_FORCE:
+ mask &= JK_STATUS_MASK_RECOVER;
+ break;
+ case JK_LB_STATE_PROBE:
+ mask &= JK_STATUS_MASK_RECOVER;
+ break;
default:
jk_log(l, JK_LOG_WARNING,
"Unknown state type '%d'",
@@ -2260,7 +2266,8 @@
"<tr><th>Act</th><td>Worker activation configuration<br/>\n"
"ACT=Active, DIS=Disabled, STP=Stopped</td></tr>\n"
"<tr><th>Stat</th><td>Worker error status<br/>\n"
- "OK=OK, N/A=Unknown, ERR=Error, REC=Recovering, BSY=Busy</td></tr>\n"
+ "OK=OK, N/A=Unknown, ERR=Error, BSY=Busy<br/>\n"
+ "REC=Recovering, PRB=Probing, FRC=Forced Recovery</td></tr>\n"
"<tr><th>D</th><td>Worker distance</td></tr>\n"
"<tr><th>F</th><td>Load Balancer factor</td></tr>\n"
"<tr><th>M</th><td>Load Balancer multiplicity</td></tr>\n"
Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?view=diff&rev=500537&r1=500536&r2=500537
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Sat Jan 27 06:41:05 2007
@@ -26,6 +26,10 @@
<br />
<subsection name="Native">
<changelog>
+ <add>
+ Load Balancer: Do not try to recover multiple times in parallel.
+ Use additional runtime states "PROBE" and "FORCED". (rjung)
+ </add>
<fix>
JkStatus: Improve data synchronization between different processes. (rjung)
</fix>
Modified: tomcat/connectors/trunk/jk/xdocs/reference/status.xml
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/reference/status.xml?view=diff&rev=500537&r1=500536&r2=500537
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/reference/status.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/reference/status.xml Sat Jan 27 06:41:05 2007
@@ -273,7 +273,8 @@
</p>
<p>
The categorization is based on the activation state of the workers (active, disabled or stopped),
-which is a pure configuration state, and the runtime state (OK, N/A, busy, recovering, error)
+which is a pure configuration state, and the runtime state
+(OK, N/A, busy, recovering, probing, forced recovery, error)
which only depends on the runtime situation.
</p>
<p>
@@ -288,7 +289,9 @@
You can define other rules for the grouping into good, bad and degraded.
The two attributes "good" and "bad" can be populated by a comma-separated list ob single characters or
dot-separated pairs. Each character stands for the first character of one of the possible states "active",
-"disabled", "stopped", "ok", "na", "busy", "recovering" and "error". Comma-separated entries will be combined
+"disabled", "stopped", "ok", "na", "busy", "recovering" and "error". The additional states "probing"
+and "forced recovery" are always rated equivalent to "recovering".
+Comma-separated entries will be combined
with logical "or", if you combine a configuration and a runtime state with a dot. the are combined with logical
"and". So the default value for "good" is "a.o,a.n,a.b,a.r", for "bad" it is "e,s".
</p>
Modified: tomcat/connectors/trunk/jk/xdocs/reference/workers.xml
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/reference/workers.xml?view=diff&rev=500537&r1=500536&r2=500537
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/reference/workers.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/reference/workers.xml Sat Jan 27 06:41:05 2007
@@ -399,7 +399,7 @@
<p>
These states are determined depending on the activation of the members
(active, disabled, stopped) and their runtime state
-(ok, n/a, busy, recovering, error).
+(ok, n/a, busy, recovering, probing, forced recovery, error).
By default, members are assumed to be "good", if their activation
is "active" and their runtime state is not "error".
</p>
@@ -409,7 +409,9 @@
and one match suffices. Each value is either a single character, or two
characters combined with a dot ".". The single characters are the
first characters in the words "active", "disabled", "stopped",
-"ok", "na", "busy", "recovering", "error". If a value consists only
+"ok", "na", "busy", "recovering", "error". The additional states "probing"
+and "forced recovery" are always rated equivalent to "recovering".
+If a value consists only
of a single character, then all members with this activation or runtime
state will be assumed good. A combination of an activation and a runtime
state concatenated with a dot "." does only apply to a member, that has
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org