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 2008/01/11 01:04:40 UTC
svn commit: r610992 - /tomcat/connectors/trunk/jk/native/common/jk_status.c
Author: rjung
Date: Thu Jan 10 16:04:31 2008
New Revision: 610992
URL: http://svn.apache.org/viewvc?rev=610992&view=rev
Log:
Only sync shm, if we actually changed a value.
Modified:
tomcat/connectors/trunk/jk/native/common/jk_status.c
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?rev=610992&r1=610991&r2=610992&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_status.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_status.c Thu Jan 10 16:04:31 2008
@@ -2107,6 +2107,7 @@
status_worker_t *w = p->worker;
JK_TRACE_ENTER(l);
+
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' producing edit form for sub worker '%s' of lb worker '%s'",
@@ -2295,6 +2296,7 @@
lb_worker_t *lb = NULL;
status_worker_t *w = p->worker;
const char *arg;
+ int sync_needed = JK_FALSE;
int i;
JK_TRACE_ENTER(l);
@@ -2332,6 +2334,7 @@
"Status worker '%s' setting 'retries' for lb worker '%s' to '%i'",
w->name, name, i);
lb->retries = i;
+ sync_needed = JK_TRUE;
}
i = status_get_int(p, JK_STATUS_ARG_LB_RECOVER_TIME,
lb->recover_wait_time, l);
@@ -2340,6 +2343,7 @@
"Status worker '%s' setting 'recover_time' for lb worker '%s' to '%i'",
w->name, name, i);
lb->recover_wait_time = i;
+ sync_needed = JK_TRUE;
}
i = status_get_int(p, JK_STATUS_ARG_LB_MAX_REPLY_TIMEOUTS,
lb->max_reply_timeouts, l);
@@ -2348,6 +2352,7 @@
"Status worker '%s' setting 'max_reply_timeouts' for lb worker '%s' to '%i'",
w->name, name, i);
lb->max_reply_timeouts = i;
+ sync_needed = JK_TRUE;
}
i = status_get_bool(p, JK_STATUS_ARG_LB_STICKY, 0, l);
if (i != lb->sticky_session) {
@@ -2355,6 +2360,7 @@
"Status worker '%s' setting 'sticky_session' for lb worker '%s' to '%i'",
w->name, name, i);
lb->sticky_session = i;
+ sync_needed = JK_TRUE;
}
i = status_get_bool(p, JK_STATUS_ARG_LB_STICKY_FORCE, 0, l);
if (i != lb->sticky_session_force) {
@@ -2362,27 +2368,32 @@
"Status worker '%s' setting 'sticky_session_force' for lb worker '%s' to '%i'",
w->name, name, i);
lb->sticky_session_force = i;
+ sync_needed = JK_TRUE;
}
if (status_get_string(p, JK_STATUS_ARG_LB_METHOD, NULL, &arg, l) == JK_TRUE) {
i = jk_lb_get_method_code(arg);
if (i != lb->lbmethod && i >= 0 && i <= JK_LB_METHOD_MAX) {
- lb->lbmethod = i;
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'method' for lb worker '%s' to '%s'",
w->name, name, jk_lb_get_method(lb, l));
+ lb->lbmethod = i;
+ sync_needed = JK_TRUE;
}
}
if (status_get_string(p, JK_STATUS_ARG_LB_LOCK, NULL, &arg, l) == JK_TRUE) {
i = jk_lb_get_lock_code(arg);
if (i != lb->lblock && i >= 0 && i <= JK_LB_LOCK_MAX) {
- lb->lblock = i;
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'lock' for lb worker '%s' to '%s'",
w->name, name, jk_lb_get_lock(lb, l));
+ lb->lblock = i;
+ sync_needed = JK_TRUE;
}
}
- lb->sequence++;
- jk_lb_push(lb, l);
+ if (sync_needed == JK_TRUE) {
+ lb->sequence++;
+ jk_lb_push(lb, l);
+ }
}
static int commit_member(jk_ws_service_t *s,
@@ -2430,6 +2441,7 @@
"Status worker '%s' setting 'route' for sub worker '%s' of lb worker '%s' to '%s'",
w->name, wr->name, lb_name, arg);
strncpy(wr->route, arg, JK_SHM_STR_SIZ);
+ rc |= 4;
if (!wr->domain[0]) {
char * id_domain = strchr(wr->route, '.');
if (id_domain) {
@@ -2447,6 +2459,7 @@
"Status worker '%s' setting 'redirect' for sub worker '%s' of lb worker '%s' to '%s'",
w->name, wr->name, lb_name, arg);
strncpy(wr->redirect, arg, JK_SHM_STR_SIZ);
+ rc |= 4;
}
}
if ((rv = status_get_string(p, JK_STATUS_ARG_LBM_DOMAIN,
@@ -2456,6 +2469,7 @@
"Status worker '%s' setting 'domain' for sub worker '%s' of lb worker '%s' to '%s'",
w->name, wr->name, lb_name, arg);
strncpy(wr->domain, arg, JK_SHM_STR_SIZ);
+ rc |= 4;
}
}
i = status_get_int(p, JK_STATUS_ARG_LBM_DISTANCE,
@@ -2465,8 +2479,10 @@
"Status worker '%s' setting 'distance' for sub worker '%s' of lb worker '%s' to '%i'",
w->name, wr->name, lb_name, i);
wr->distance = i;
+ rc |= 4;
}
- wr->sequence++;
+ if (rc)
+ wr->sequence++;
return rc;
}
@@ -2533,6 +2549,7 @@
if (lb) {
for (j = 0; j < lb->num_of_workers; j++) {
+ int sync_needed = JK_FALSE;
worker_record_t *wr = &(lb->lb_workers[j]);
snprintf(vname, 32-1, "" JK_STATUS_ARG_MULT_VALUE_BASE "%d", j);
@@ -2544,6 +2561,7 @@
w->name, wr->name, name, i);
wr->lb_factor = i;
rc = 2;
+ sync_needed = JK_TRUE;
}
}
else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DISTANCE)) {
@@ -2553,6 +2571,7 @@
"Status worker '%s' setting 'distance' for sub worker '%s' of lb worker '%s' to '%i'",
w->name, wr->name, name, i);
wr->distance = i;
+ sync_needed = JK_TRUE;
}
}
else {
@@ -2561,11 +2580,12 @@
if (rv == JK_TRUE) {
i = jk_lb_get_activation_code(arg);
if (i != wr->activation && i >= 0 && i <= JK_LB_ACTIVATION_MAX) {
- wr->activation = i;
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'activation' for sub worker '%s' of lb worker '%s' to '%s'",
w->name, wr->name, name, jk_lb_get_activation(wr, l));
+ wr->activation = i;
rc = 1;
+ sync_needed = JK_TRUE;
}
}
}
@@ -2576,6 +2596,7 @@
"Status worker '%s' setting 'route' for sub worker '%s' of lb worker '%s' to '%s'",
w->name, wr->name, name, arg);
strncpy(wr->route, arg, JK_SHM_STR_SIZ);
+ sync_needed = JK_TRUE;
if (!wr->domain[0]) {
char * id_domain = strchr(wr->route, '.');
if (id_domain) {
@@ -2594,6 +2615,7 @@
"Status worker '%s' setting 'redirect' for sub worker '%s' of lb worker '%s' to '%s'",
w->name, wr->name, name, arg);
strncpy(wr->redirect, arg, JK_SHM_STR_SIZ);
+ sync_needed = JK_TRUE;
}
}
}
@@ -2604,19 +2626,26 @@
"Status worker '%s' setting 'domain' for sub worker '%s' of lb worker '%s' to '%s'",
w->name, wr->name, name, arg);
strncpy(wr->domain, arg, JK_SHM_STR_SIZ);
+ sync_needed = JK_TRUE;
}
}
}
}
- wr->sequence++;
+ if (sync_needed == JK_TRUE) {
+ wr->sequence++;
+ if (!rc)
+ rc = 3;
+ }
}
if (rc == 1)
reset_lb_values(lb, l);
else if (rc == 2)
/* Recalculate the load multiplicators wrt. lb_factor */
update_mult(lb, l);
- lb->sequence++;
- jk_lb_push(lb, l);
+ if (rc) {
+ lb->sequence++;
+ jk_lb_push(lb, l);
+ }
}
JK_TRACE_EXIT(l);
}
@@ -2993,8 +3022,10 @@
return JK_FALSE;
}
rc = commit_member(s, p, wr, lb->name, l);
- lb->sequence++;
- jk_lb_push(lb, l);
+ if (rc) {
+ lb->sequence++;
+ jk_lb_push(lb, l);
+ }
if (rc & 1)
reset_lb_values(lb, l);
if (rc & 2)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org