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 2013/06/26 22:17:06 UTC
svn commit: r1497071 - in /tomcat/jk/trunk/native/common: jk_lb_worker.c
jk_service.h
Author: rjung
Date: Wed Jun 26 20:17:05 2013
New Revision: 1497071
URL: http://svn.apache.org/r1497071
Log:
Add a flag to pass status, whether a request
could be handled in a sticky way.
Modified:
tomcat/jk/trunk/native/common/jk_lb_worker.c
tomcat/jk/trunk/native/common/jk_service.h
Modified: tomcat/jk/trunk/native/common/jk_lb_worker.c
URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_lb_worker.c?rev=1497071&r1=1497070&r2=1497071&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_lb_worker.c (original)
+++ tomcat/jk/trunk/native/common/jk_lb_worker.c Wed Jun 26 20:17:05 2013
@@ -877,6 +877,8 @@ static int find_bysession_route(jk_ws_se
if (candidate < 0) {
uses_domain = 1;
candidate = find_best_bydomain(s, p, session_route, states, l);
+ } else {
+ s->sticky = JK_TRUE;
}
if (candidate >= 0) {
lb_sub_worker_t wr = p->lb_workers[candidate];
@@ -939,8 +941,10 @@ static int find_failover_worker(jk_ws_se
break;
}
}
- if (redirect)
+ if (redirect) {
rc = find_bysession_route(s, p, redirect, states, l);
+ s->sticky = JK_FALSE;
+ }
return rc;
}
@@ -967,6 +971,7 @@ static int get_most_suitable_worker(jk_w
int rc = -1;
JK_TRACE_ENTER(l);
+ s->sticky = JK_FALSE;
if (p->num_of_workers == 1) {
/* No need to find the best worker
* if there is a single one
@@ -978,6 +983,7 @@ static int get_most_suitable_worker(jk_w
activation = p->lb_workers[0].activation;
if (JK_WORKER_USABLE_STICKY(states[0], activation)) {
if (activation != JK_LB_ACTIVATION_DISABLED) {
+ s->sticky = JK_TRUE;
JK_TRACE_EXIT(l);
return 0;
}
@@ -1240,8 +1246,8 @@ static int JK_METHOD service(jk_endpoint
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
- "service worker=%s route=%s",
- rec->name, s->route);
+ "service worker=%s route=%s failover=%s",
+ rec->name, s->route, s->sticky ? "false" : "true");
if (p->worker->lblock == JK_LB_LOCK_PESSIMISTIC)
jk_shm_lock();
Modified: tomcat/jk/trunk/native/common/jk_service.h
URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_service.h?rev=1497071&r1=1497070&r2=1497071&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_service.h (original)
+++ tomcat/jk/trunk/native/common/jk_service.h Wed Jun 26 20:17:05 2013
@@ -224,6 +224,12 @@ struct jk_ws_service
unsigned num_attributes; /* Number of request attributes */
/*
+ * JK_TRUE iff handled by a load balancer, the request
+ * contained a route and it is the route of the current worker.
+ */
+ int sticky;
+
+ /*
* The route is in use when the adapter load balance among
* several workers. It is the ID of a specific target in the load balance
* group. We are using this variable to implement target session
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org