Author: rjung
Date: Wed Jan 9 16:52:57 2008
New Revision: 610623
URL: http://svn.apache.org/viewvc?rev=610623&view=rev
Log:
LB sub member dynamic management part 2:
Use local memory copies of read mostly shm attributes
of lb sub workers in lb and status worker.
Modified:
tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c
tomcat/connectors/trunk/jk/native/common/jk_status.c
tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.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?rev=610623&r1=610622&r2=610623&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c Wed Jan 9 16:52:57
2008
@@ -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_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)
+#define JK_WORKER_USABLE(w) ((w)->s->state != JK_LB_STATE_ERROR &&
(w)->s->state != JK_LB_STATE_PROBE && (w)->s->state != JK_LB_STATE_BUSY &&
(w)->activation != JK_LB_ACTIVATION_STOPPED && (w)->activation !=
JK_LB_ACTIVATION_DISABLED)
+#define JK_WORKER_USABLE_STICKY(w) ((w)->s->state != JK_LB_STATE_ERROR &&
(w)->s->state != JK_LB_STATE_PROBE && (w)->activation !=
JK_LB_ACTIVATION_STOPPED)
static const char *lb_locking_type[] = {
JK_LB_LOCK_TEXT_OPTIMISTIC,
@@ -211,7 +211,7 @@
/* Return the string representation of the balance worker activation */
const char *jk_lb_get_activation(worker_record_t *p, jk_logger_t *l)
{
- return lb_activation_type[p->s->activation];
+ return lb_activation_type[p->activation];
}
int jk_lb_get_activation_code(const char *v)
@@ -235,16 +235,16 @@
jk_uint64_t s = 1;
JK_TRACE_ENTER(l);
for (i = 0; i < p->num_of_workers; i++) {
- s = scm(s, p->lb_workers[i].s->lb_factor);
+ s = scm(s, p->lb_workers[i].lb_factor);
}
for (i = 0; i < p->num_of_workers; i++) {
- p->lb_workers[i].s->lb_mult = s / p->lb_workers[i].s->lb_factor;
+ p->lb_workers[i].lb_mult = s / p->lb_workers[i].lb_factor;
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"worker %s gets multiplicity %"
JK_UINT64_T_FMT,
- p->lb_workers[i].s->name,
- p->lb_workers[i].s->lb_mult);
+ p->lb_workers[i].name,
+ p->lb_workers[i].lb_mult);
}
JK_TRACE_EXIT(l);
}
@@ -273,7 +273,7 @@
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"syncing mem for lb '%s' from shm",
- p->s->name);
+ p->name);
p->sticky_session = p->s->sticky_session;
p->sticky_session_force = p->s->sticky_session_force;
p->recover_wait_time = p->s->recover_wait_time;
@@ -289,7 +289,7 @@
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"syncing mem for member '%s' of lb '%s' from shm",
- w->s->name, p->s->name);
+ w->name, p->name);
strncpy(w->route, w->s->route, JK_SHM_STR_SIZ);
strncpy(w->domain, w->s->domain, JK_SHM_STR_SIZ);
strncpy(w->redirect, w->s->redirect, JK_SHM_STR_SIZ);
@@ -314,7 +314,7 @@
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"syncing shm for lb '%s' from mem",
- p->s->name);
+ p->name);
p->s->sticky_session = p->sticky_session;
p->s->sticky_session_force = p->sticky_session_force;
p->s->recover_wait_time = p->recover_wait_time;
@@ -330,7 +330,7 @@
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"syncing shm for member '%s' of lb '%s' from mem",
- w->s->name, p->s->name);
+ w->name, p->name);
strncpy(w->s->route, w->route, JK_SHM_STR_SIZ);
strncpy(w->s->domain, w->domain, JK_SHM_STR_SIZ);
strncpy(w->s->redirect, w->redirect, JK_SHM_STR_SIZ);
@@ -492,17 +492,17 @@
w = &p->lb_workers[i];
if (w->s->state == JK_LB_STATE_ERROR) {
elapsed = (int)difftime(now, w->s->error_time);
- if (elapsed <= p->s->recover_wait_time) {
+ if (elapsed <= p->recover_wait_time) {
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"worker %s will recover in %d seconds",
- w->s->name, p->s->recover_wait_time - elapsed);
+ w->name, p->recover_wait_time - elapsed);
}
else {
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"worker %s is marked for recovery",
- w->s->name);
+ w->name);
if (p->lbmethod != JK_LB_METHOD_BUSYNESS)
w->s->lb_value = curmax;
w->s->reply_timeouts = 0;
@@ -537,7 +537,7 @@
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_INFO,
"worker %s is marked for recovery",
- w->s->name);
+ w->name);
w->s->state = JK_LB_STATE_FORCE;
forced++;
}
@@ -630,7 +630,7 @@
unsigned int i;
for (i = 0; i < p->num_of_workers; i++) {
- if (strcmp(p->lb_workers[i].s->route, name) == 0) {
+ if (strcmp(p->lb_workers[i].route, name) == 0) {
rc = &p->lb_workers[i];
break;
}
@@ -651,19 +651,19 @@
/* First try to see if we have available candidate */
for (i = 0; i < p->num_of_workers; i++) {
/* Skip all workers that are not member of domain */
- if (strlen(p->lb_workers[i].s->domain) == 0 ||
- strcmp(p->lb_workers[i].s->domain, domain))
+ if (strlen(p->lb_workers[i].domain) == 0 ||
+ strcmp(p->lb_workers[i].domain, domain))
continue;
/* Take into calculation only the workers that are
* not in error state, stopped, disabled or busy.
*/
- if (JK_WORKER_USABLE(p->lb_workers[i].s)) {
- if (!candidate || p->lb_workers[i].s->distance < d ||
+ if (JK_WORKER_USABLE(&p->lb_workers[i])) {
+ if (!candidate || p->lb_workers[i].distance < d ||
(p->lb_workers[i].s->lb_value < curmin &&
- p->lb_workers[i].s->distance == d)) {
+ p->lb_workers[i].distance == d)) {
candidate = &p->lb_workers[i];
curmin = p->lb_workers[i].s->lb_value;
- d = p->lb_workers[i].s->distance;
+ d = p->lb_workers[i].distance;
}
}
}
@@ -693,13 +693,13 @@
/* Take into calculation only the workers that are
* not in error state, stopped, disabled or busy.
*/
- if (JK_WORKER_USABLE(p->lb_workers[i].s)) {
- if (!candidate || p->lb_workers[i].s->distance < d ||
+ if (JK_WORKER_USABLE(&p->lb_workers[i])) {
+ if (!candidate || p->lb_workers[i].distance < d ||
(p->lb_workers[i].s->lb_value < curmin &&
- p->lb_workers[i].s->distance == d)) {
+ p->lb_workers[i].distance == d)) {
candidate = &p->lb_workers[i];
curmin = p->lb_workers[i].s->lb_value;
- d = p->lb_workers[i].s->distance;
+ d = p->lb_workers[i].distance;
p->next_offset = i + 1;
}
}
@@ -722,7 +722,7 @@
*route_is_domain = JK_TRUE;
}
if (candidate) {
- if (!JK_WORKER_USABLE_STICKY(candidate->s)) {
+ if (!JK_WORKER_USABLE_STICKY(candidate)) {
/* We have a worker that is error state or stopped.
* If it has a redirection set use that redirection worker.
* This enables to safely remove the member from the
@@ -731,15 +731,15 @@
*/
if (p->sticky_session_force)
candidate = NULL;
- else if (*candidate->s->redirect) {
- candidate = find_by_session(p, candidate->s->redirect, l);
+ else if (*candidate->redirect) {
+ candidate = find_by_session(p, candidate->redirect, l);
*route_is_domain = JK_FALSE;
}
- else if (*candidate->s->domain && !uses_domain) {
- candidate = find_best_bydomain(p, candidate->s->domain, l);
+ else if (*candidate->domain && !uses_domain) {
+ candidate = find_best_bydomain(p, candidate->domain, l);
*route_is_domain = JK_TRUE;
}
- if (candidate && !JK_WORKER_USABLE_STICKY(candidate->s))
+ if (candidate && !JK_WORKER_USABLE_STICKY(candidate))
candidate = NULL;
}
}
@@ -755,8 +755,8 @@
const char *redirect = NULL;
for (i = 0; i < p->num_of_workers; i++) {
- if (strlen(p->lb_workers[i].s->redirect)) {
- redirect = p->lb_workers[i].s->redirect;
+ if (strlen(p->lb_workers[i].redirect)) {
+ redirect = p->lb_workers[i].redirect;
break;
}
}
@@ -791,8 +791,8 @@
/* No need to find the best worker
* if there is a single one
*/
- if (JK_WORKER_USABLE_STICKY(p->lb_workers[0].s)) {
- if (p->lb_workers[0].s->activation != JK_LB_ACTIVATION_DISABLED) {
+ if (JK_WORKER_USABLE_STICKY(&p->lb_workers[0])) {
+ if (p->lb_workers[0].activation != JK_LB_ACTIVATION_DISABLED) {
JK_TRACE_EXIT(l);
return p->lb_workers;
}
@@ -843,7 +843,7 @@
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"found worker %s (%s) for route %s and partial
sessionid %s",
- rc->s->name, rc->s->route, session_route,
sessionid);
+ rc->name, rc->route, session_route, sessionid);
JK_TRACE_EXIT(l);
return rc;
}
@@ -874,7 +874,7 @@
if (rc && JK_IS_DEBUG_LEVEL(l)) {
jk_log(l, JK_LOG_DEBUG,
"found best worker %s (%s) using method '%s'",
- rc->s->name, rc->s->route, jk_lb_get_method(p, l));
+ rc->name, rc->route, jk_lb_get_method(p, l));
}
JK_TRACE_EXIT(l);
return rc;
@@ -889,7 +889,7 @@
char *buf = jk_pool_alloc(s->pool, sizeof(char *) * JK_LB_NOTES_COUNT *
JK_LB_UINT64_STR_SZ);
if (log_values && buf) {
/* JK_NOTE_LB_FIRST/LAST_NAME */
- log_values[0] = w->s->name;
+ log_values[0] = w->name;
snprintf(buf, JK_LB_UINT64_STR_SZ, "%" JK_UINT64_T_FMT,
w->s->lb_value);
/* JK_NOTE_LB_FIRST/LAST_VALUE */
log_values[1] = buf;
@@ -1002,15 +1002,15 @@
int retry = 0;
int retry_wait = JK_LB_MIN_RETRY_WAIT;
if (route_is_domain == JK_FALSE)
- s->route = rec->s->route;
+ s->route = rec->route;
else
- s->route = rec->s->domain;
+ s->route = rec->domain;
prec = rec;
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"service worker=%s route=%s",
- rec->s->name, s->route);
+ rec->name, s->route);
if (p->worker->lblock == JK_LB_LOCK_PESSIMISTIC)
jk_shm_lock();
@@ -1051,7 +1051,7 @@
jk_shm_unlock();
jk_log(l, JK_LOG_INFO,
"could not get free endpoint for worker %s (%d
retries)",
- rec->s->name, retry);
+ rec->name, retry);
}
else {
int service_stat = JK_UNSET;
@@ -1077,7 +1077,7 @@
(p->worker->lbmethod == JK_LB_METHOD_BUSYNESS) ||
(p->worker->lbmethod == JK_LB_METHOD_SESSIONS &&
!sessionid) )
- rec->s->lb_value += rec->s->lb_mult;
+ rec->s->lb_value += rec->lb_mult;
if (p->worker->lblock == JK_LB_LOCK_PESSIMISTIC)
jk_shm_unlock();
@@ -1095,11 +1095,11 @@
rec->s->readed += rd;
rec->s->transferred += wr;
if (p->worker->lbmethod == JK_LB_METHOD_TRAFFIC) {
- rec->s->lb_value += (rd+wr)*rec->s->lb_mult;
+ rec->s->lb_value += (rd+wr)*rec->lb_mult;
}
else if (p->worker->lbmethod == JK_LB_METHOD_BUSYNESS) {
- if (rec->s->lb_value >= rec->s->lb_mult) {
- rec->s->lb_value -= rec->s->lb_mult;
+ if (rec->s->lb_value >= rec->lb_mult) {
+ rec->s->lb_value -= rec->lb_mult;
}
else {
rec->s->lb_value = 0;
@@ -1111,9 +1111,9 @@
JK_UINT64_T_FMT
") ",
"- correcting to 0",
- rec->s->name,
+ rec->name,
rec->s->lb_value,
- rec->s->lb_mult);
+ rec->lb_mult);
}
}
}
@@ -1181,7 +1181,7 @@
}
else if (service_stat == JK_REPLY_TIMEOUT) {
rec->s->reply_timeouts++;
- if (rec->s->reply_timeouts >
(unsigned)p->worker->s->max_reply_timeouts) {
+ if (rec->s->reply_timeouts >
(unsigned)p->worker->max_reply_timeouts) {
/*
* Service failed - to many reply timeouts
* Take this node out of service.
@@ -1216,7 +1216,7 @@
if (rec->s->state == JK_LB_STATE_ERROR)
jk_log(l, JK_LOG_INFO,
"service failed, worker %s is in error state",
- rec->s->name);
+ rec->name);
if (p->worker->lblock == JK_LB_LOCK_PESSIMISTIC)
jk_shm_unlock();
}
@@ -1333,12 +1333,12 @@
unsigned int num_of_workers;
const char *secret;
- p->sticky_session = jk_get_is_sticky_session(props, p->s->name);
- p->sticky_session_force = jk_get_is_sticky_session_force(props,
p->s->name);
- secret = jk_get_worker_secret(props, p->s->name);
+ p->sticky_session = jk_get_is_sticky_session(props, p->name);
+ p->sticky_session_force = jk_get_is_sticky_session_force(props,
p->name);
+ secret = jk_get_worker_secret(props, p->name);
if (jk_get_lb_worker_list(props,
- p->s->name,
+ p->name,
&worker_names,
&num_of_workers) && num_of_workers) {
unsigned int i = 0;
@@ -1365,12 +1365,16 @@
for (i = 0; i < num_of_workers; i++) {
const char *s;
unsigned int ms;
+ strncpy(p->lb_workers[i].name, worker_names[i],
+ JK_SHM_STR_SIZ);
strncpy(p->lb_workers[i].s->name, worker_names[i],
JK_SHM_STR_SIZ);
- p->lb_workers[i].s->lb_factor =
+ p->lb_workers[i].sequence = 0;
+ p->lb_workers[i].s->sequence = 0;
+ p->lb_workers[i].lb_factor =
jk_get_lb_factor(props, worker_names[i]);
- if (p->lb_workers[i].s->lb_factor < 1) {
- p->lb_workers[i].s->lb_factor = 1;
+ if (p->lb_workers[i].lb_factor < 1) {
+ p->lb_workers[i].lb_factor = 1;
}
/* Calculate the maximum packet size from all workers
* for the recovery buffer.
@@ -1378,23 +1382,23 @@
ms = jk_get_max_packet_size(props, worker_names[i]);
if (ms > p->max_packet_size)
p->max_packet_size = ms;
- p->lb_workers[i].s->distance =
+ p->lb_workers[i].distance =
jk_get_distance(props, worker_names[i]);
if ((s = jk_get_worker_route(props, worker_names[i], NULL)))
- strncpy(p->lb_workers[i].s->route, s, JK_SHM_STR_SIZ);
+ strncpy(p->lb_workers[i].route, s, JK_SHM_STR_SIZ);
else
- strncpy(p->lb_workers[i].s->route, worker_names[i],
JK_SHM_STR_SIZ);
+ strncpy(p->lb_workers[i].route, worker_names[i],
JK_SHM_STR_SIZ);
if ((s = jk_get_worker_domain(props, worker_names[i], NULL)))
- strncpy(p->lb_workers[i].s->domain, s, JK_SHM_STR_SIZ);
+ strncpy(p->lb_workers[i].domain, s, JK_SHM_STR_SIZ);
if ((s = jk_get_worker_redirect(props, worker_names[i], NULL)))
- strncpy(p->lb_workers[i].s->redirect, s, JK_SHM_STR_SIZ);
+ strncpy(p->lb_workers[i].redirect, s, JK_SHM_STR_SIZ);
p->lb_workers[i].s->lb_value = 0;
p->lb_workers[i].s->state = JK_LB_STATE_IDLE;
p->lb_workers[i].s->error_time = 0;
- p->lb_workers[i].s->activation =
+ p->lb_workers[i].activation =
jk_get_worker_activation(props, worker_names[i]);
- if (!wc_create_worker(p->lb_workers[i].s->name, 0,
+ if (!wc_create_worker(p->lb_workers[i].name, 0,
props,
&(p->lb_workers[i].w),
we, l) || !p->lb_workers[i].w) {
@@ -1411,17 +1415,17 @@
if (i != num_of_workers) {
jk_log(l, JK_LOG_ERROR,
"Failed creating worker %s",
- p->lb_workers[i].s->name);
+ p->lb_workers[i].name);
close_workers(p, i, l);
}
else {
/* Update domain names if route contains period '.' */
for (i = 0; i < num_of_workers; i++) {
- if (!p->lb_workers[i].s->domain[0]) {
- char * id_domain = strchr(p->lb_workers[i].s->route,
'.');
+ if (!p->lb_workers[i].domain[0]) {
+ char * id_domain = strchr(p->lb_workers[i].route, '.');
if (id_domain) {
*id_domain = '\0';
- strcpy(p->lb_workers[i].s->domain,
p->lb_workers[i].s->route);
+ strcpy(p->lb_workers[i].domain,
p->lb_workers[i].route);
*id_domain = '.';
}
}
@@ -1429,23 +1433,23 @@
jk_log(l, JK_LOG_DEBUG,
"Balanced worker %i has name %s and route %s in
domain %s",
i,
- p->lb_workers[i].s->name,
- p->lb_workers[i].s->route,
- p->lb_workers[i].s->domain);
+ p->lb_workers[i].name,
+ p->lb_workers[i].route,
+ p->lb_workers[i].domain);
}
}
p->num_of_workers = num_of_workers;
update_mult(p, l);
for (i = 0; i < num_of_workers; i++) {
for (j = 0; j < i; j++) {
- if (strcmp(p->lb_workers[i].s->route,
p->lb_workers[j].s->route) == 0) {
+ if (strcmp(p->lb_workers[i].route,
p->lb_workers[j].route) == 0) {
jk_log(l, JK_LOG_ERROR,
"Balanced workers number %i (%s) and %i
(%s) share the same route %s - aborting configuration!",
i,
- p->lb_workers[i].s->name,
+ p->lb_workers[i].name,
j,
- p->lb_workers[j].s->name,
- p->lb_workers[i].s->route);
+ p->lb_workers[j].name,
+ p->lb_workers[i].route);
JK_TRACE_EXIT(l);
return JK_FALSE;
}
@@ -1471,21 +1475,21 @@
lb_worker_t *p = (lb_worker_t *)pThis->worker_private;
JK_TRACE_ENTER(log);
- p->retries = jk_get_worker_retries(props, p->s->name,
+ p->retries = jk_get_worker_retries(props, p->name,
JK_RETRIES);
- p->recover_wait_time = jk_get_worker_recover_timeout(props, p->s->name,
+ p->recover_wait_time = jk_get_worker_recover_timeout(props, p->name,
WAIT_BEFORE_RECOVER);
if (p->recover_wait_time < 1)
p->recover_wait_time = 1;
- p->max_reply_timeouts = jk_get_worker_max_reply_timeouts(props, p->s->name,
+ p->max_reply_timeouts = jk_get_worker_max_reply_timeouts(props, p->name,
0);
p->maintain_time = jk_get_worker_maintain_time(props);
if(p->maintain_time < 0)
p->maintain_time = 0;
p->s->last_maintain_time = time(NULL);
- p->lbmethod = jk_get_lb_method(props, p->s->name);
- p->lblock = jk_get_lb_lock(props, p->s->name);
+ p->lbmethod = jk_get_lb_method(props, p->name);
+ p->lblock = jk_get_lb_lock(props, p->name);
JK_INIT_CS(&(p->cs), i);
if (i == JK_FALSE) {
@@ -1571,6 +1575,7 @@
JK_TRACE_EXIT(l);
return 0;
}
+ strncpy(private_data->name, name, JK_SHM_STR_SIZ);
strncpy(private_data->s->name, name, JK_SHM_STR_SIZ);
private_data->lb_workers = NULL;
private_data->num_of_workers = 0;
@@ -1583,6 +1588,7 @@
private_data->recover_wait_time = WAIT_BEFORE_RECOVER;
private_data->max_reply_timeouts = 0;
private_data->sequence = 0;
+ private_data->s->sequence = 0;
private_data->next_offset = 0;
*w = &private_data->worker;
JK_TRACE_EXIT(l);
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=610623&r1=610622&r2=610623&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_status.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_status.c Wed Jan 9 16:52:57
2008
@@ -583,7 +583,7 @@
jk_logger_t *l)
{
jk_uint32_t mask = 0;
- int activation = wr->s->activation;
+ int activation = wr->activation;
int state = wr->s->state;
jk_uint32_t good = w->good_mask;
jk_uint32_t bad = w->bad_mask;
@@ -1224,7 +1224,7 @@
}
for (i = 0; i < (int)lb->num_of_workers; i++) {
wr = &(lb->lb_workers[i]);
- if (strcmp(sub_worker, wr->s->name) == 0)
+ if (strcmp(sub_worker, wr->name) == 0)
break;
}
*wrp = wr;
@@ -1457,7 +1457,7 @@
int ms_min;
int ms_max;
unsigned int j;
- const char *name = lb->s->name;
+ const char *name = lb->name;
status_worker_t *w = p->worker;
JK_TRACE_ENTER(l);
@@ -1661,28 +1661,28 @@
if (!read_only) {
jk_puts(s, "[");
status_write_uri(s, p, "E", JK_STATUS_CMD_EDIT,
JK_STATUS_MIME_UNKNOWN,
- name, wr->s->name, 0, 0, "", l);
+ name, wr->name, 0, 0, "", l);
jk_puts(s, "|");
status_write_uri(s, p, "R", JK_STATUS_CMD_RESET,
JK_STATUS_MIME_UNKNOWN,
- name, wr->s->name, 0, 0, "", l);
+ name, wr->name, 0, 0, "", l);
if (wr->s->state == JK_LB_STATE_ERROR) {
jk_puts(s, "|");
status_write_uri(s, p, "T", JK_STATUS_CMD_RECOVER,
JK_STATUS_MIME_UNKNOWN,
- name, wr->s->name, 0, 0, "", l);
+ name, wr->name, 0, 0, "", l);
}
jk_puts(s, "]");
}
jk_puts(s, " </td>");
jk_printf(s, JK_STATUS_SHOW_MEMBER_ROW,
- wr->s->name,
+ wr->name,
status_worker_type(wr->w->type),
a->host, a->port,
jk_dump_hinfo(&a->worker_inet_addr, buf),
jk_lb_get_activation(wr, l),
jk_lb_get_state(wr, l),
- wr->s->distance,
- wr->s->lb_factor,
- wr->s->lb_mult,
+ wr->distance,
+ wr->lb_factor,
+ wr->lb_mult,
wr->s->lb_value,
wr->s->elected,
wr->s->errors,
@@ -1692,9 +1692,9 @@
status_strfsize(wr->s->readed, buf_rd),
wr->s->busy,
wr->s->max_busy,
- wr->s->route,
- wr->s->redirect ? (*wr->s->redirect ?
wr->s->redirect : " ") : " ",
- wr->s->domain ? (*wr->s->domain ? wr->s->domain :
" ") : " ",
+ wr->route,
+ wr->redirect ? (*wr->redirect ? wr->redirect :
" ") : " ",
+ wr->domain ? (*wr->domain ? wr->domain : " ") :
" ",
rs_min,
rs_max);
@@ -1702,19 +1702,19 @@
else if (mime == JK_STATUS_MIME_XML) {
jk_print_xml_start_elt(s, w, 6, 0, "member");
- jk_print_xml_att_string(s, 8, "name", wr->s->name);
+ jk_print_xml_att_string(s, 8, "name", wr->name);
jk_print_xml_att_string(s, 8, "type",
status_worker_type(wr->w->type));
jk_print_xml_att_string(s, 8, "host", a->host);
jk_print_xml_att_int(s, 8, "port", a->port);
jk_print_xml_att_string(s, 8, "address",
jk_dump_hinfo(&a->worker_inet_addr, buf));
jk_print_xml_att_string(s, 8, "activation",
jk_lb_get_activation(wr, l));
- jk_print_xml_att_int(s, 8, "lbfactor", wr->s->lb_factor);
- jk_print_xml_att_string(s, 8, "route", wr->s->route);
- jk_print_xml_att_string(s, 8, "redirect", wr->s->redirect);
- jk_print_xml_att_string(s, 8, "domain", wr->s->domain);
- jk_print_xml_att_int(s, 8, "distance", wr->s->distance);
+ jk_print_xml_att_int(s, 8, "lbfactor", wr->lb_factor);
+ jk_print_xml_att_string(s, 8, "route", wr->route);
+ jk_print_xml_att_string(s, 8, "redirect", wr->redirect);
+ jk_print_xml_att_string(s, 8, "domain", wr->domain);
+ jk_print_xml_att_int(s, 8, "distance", wr->distance);
jk_print_xml_att_string(s, 8, "state", jk_lb_get_state(wr, l));
- jk_print_xml_att_uint64(s, 8, "lbmult", wr->s->lb_mult);
+ jk_print_xml_att_uint64(s, 8, "lbmult", wr->lb_mult);
jk_print_xml_att_uint64(s, 8, "lbvalue", wr->s->lb_value);
jk_print_xml_att_uint64(s, 8, "elected", wr->s->elected);
jk_print_xml_att_uint32(s, 8, "errors", wr->s->errors);
@@ -1733,19 +1733,19 @@
else if (mime == JK_STATUS_MIME_TXT) {
jk_puts(s, "Member:");
- jk_printf(s, " name=%s", wr->s->name);
+ jk_printf(s, " name=%s", wr->name);
jk_printf(s, " type=%s", status_worker_type(wr->w->type));
jk_printf(s, " host=%s", a->host);
jk_printf(s, " port=%d", a->port);
jk_printf(s, " address=%s",
jk_dump_hinfo(&a->worker_inet_addr, buf));
jk_printf(s, " activation=%s", jk_lb_get_activation(wr, l));
- jk_printf(s, " lbfactor=%d", wr->s->lb_factor);
- jk_printf(s, " route=\"%s\"", wr->s->route ? wr->s->route :
"");
- jk_printf(s, " redirect=\"%s\"", wr->s->redirect ?
wr->s->redirect : "");
- jk_printf(s, " domain=\"%s\"", wr->s->domain ? wr->s->domain :
"");
- jk_printf(s, " distance=%d", wr->s->distance);
+ jk_printf(s, " lbfactor=%d", wr->lb_factor);
+ jk_printf(s, " route=\"%s\"", wr->route ? wr->route : "");
+ jk_printf(s, " redirect=\"%s\"", wr->redirect ? wr->redirect :
"");
+ jk_printf(s, " domain=\"%s\"", wr->domain ? wr->domain : "");
+ jk_printf(s, " distance=%d", wr->distance);
jk_printf(s, " state=%s", jk_lb_get_state(wr, l));
- jk_printf(s, " lbmult=%" JK_UINT64_T_FMT, wr->s->lb_mult);
+ jk_printf(s, " lbmult=%" JK_UINT64_T_FMT, wr->lb_mult);
jk_printf(s, " lbvalue=%" JK_UINT64_T_FMT, wr->s->lb_value);
jk_printf(s, " elected=%" JK_UINT64_T_FMT, wr->s->elected);
jk_printf(s, " errors=%" JK_UINT32_T_FMT, wr->s->errors);
@@ -1762,30 +1762,30 @@
}
else if (mime == JK_STATUS_MIME_PROP) {
- jk_print_prop_att_string(s, w, name, "balance_workers",
wr->s->name);
- jk_print_prop_att_string(s, w, wr->s->name, "type",
status_worker_type(wr->w->type));
- jk_print_prop_att_string(s, w, wr->s->name, "host", a->host);
- jk_print_prop_att_int(s, w, wr->s->name, "port", a->port);
- jk_print_prop_att_string(s, w, wr->s->name, "address",
jk_dump_hinfo(&a->worker_inet_addr, buf));
- jk_print_prop_att_string(s, w, wr->s->name, "activation",
jk_lb_get_activation(wr, l));
- jk_print_prop_att_int(s, w, wr->s->name, "lbfactor",
wr->s->lb_factor);
- jk_print_prop_att_string(s, w, wr->s->name, "route",
wr->s->route);
- jk_print_prop_att_string(s, w, wr->s->name, "redirect",
wr->s->redirect);
- jk_print_prop_att_string(s, w, wr->s->name, "domain",
wr->s->domain);
- jk_print_prop_att_int(s, w, wr->s->name, "distance",
wr->s->distance);
- jk_print_prop_att_string(s, w, wr->s->name, "state",
jk_lb_get_state(wr, l));
- jk_print_prop_att_uint64(s, w, wr->s->name, "lbmult",
wr->s->lb_mult);
- jk_print_prop_att_uint64(s, w, wr->s->name, "lbvalue",
wr->s->lb_value);
- jk_print_prop_att_uint64(s, w, wr->s->name, "elected",
wr->s->elected);
- jk_print_prop_att_uint32(s, w, wr->s->name, "errors",
wr->s->errors);
- jk_print_prop_att_uint32(s, w, wr->s->name, "client_errors",
wr->s->client_errors);
- jk_print_prop_att_uint32(s, w, wr->s->name, "reply_timeouts",
wr->s->reply_timeouts);
- jk_print_prop_att_uint64(s, w, wr->s->name, "transferred",
wr->s->transferred);
- jk_print_prop_att_uint64(s, w, wr->s->name, "read",
wr->s->readed);
- jk_print_prop_att_int(s, w, wr->s->name, "busy", wr->s->busy);
- jk_print_prop_att_int(s, w, wr->s->name, "max_busy",
wr->s->max_busy);
- jk_print_prop_att_int(s, w, wr->s->name,
"time_to_recover_min", rs_min);
- jk_print_prop_att_int(s, w, wr->s->name,
"time_to_recover_max", rs_max);
+ jk_print_prop_att_string(s, w, name, "balance_workers",
wr->name);
+ jk_print_prop_att_string(s, w, wr->name, "type",
status_worker_type(wr->w->type));
+ jk_print_prop_att_string(s, w, wr->name, "host", a->host);
+ jk_print_prop_att_int(s, w, wr->name, "port", a->port);
+ jk_print_prop_att_string(s, w, wr->name, "address",
jk_dump_hinfo(&a->worker_inet_addr, buf));
+ jk_print_prop_att_string(s, w, wr->name, "activation",
jk_lb_get_activation(wr, l));
+ jk_print_prop_att_int(s, w, wr->name, "lbfactor",
wr->lb_factor);
+ jk_print_prop_att_string(s, w, wr->name, "route", wr->route);
+ jk_print_prop_att_string(s, w, wr->name, "redirect",
wr->redirect);
+ jk_print_prop_att_string(s, w, wr->name, "domain", wr->domain);
+ jk_print_prop_att_int(s, w, wr->name, "distance",
wr->distance);
+ jk_print_prop_att_string(s, w, wr->name, "state",
jk_lb_get_state(wr, l));
+ jk_print_prop_att_uint64(s, w, wr->name, "lbmult",
wr->lb_mult);
+ jk_print_prop_att_uint64(s, w, wr->name, "lbvalue",
wr->s->lb_value);
+ jk_print_prop_att_uint64(s, w, wr->name, "elected",
wr->s->elected);
+ jk_print_prop_att_uint32(s, w, wr->name, "errors",
wr->s->errors);
+ jk_print_prop_att_uint32(s, w, wr->name, "client_errors",
wr->s->client_errors);
+ jk_print_prop_att_uint32(s, w, wr->name, "reply_timeouts",
wr->s->reply_timeouts);
+ jk_print_prop_att_uint64(s, w, wr->name, "transferred",
wr->s->transferred);
+ jk_print_prop_att_uint64(s, w, wr->name, "read",
wr->s->readed);
+ jk_print_prop_att_int(s, w, wr->name, "busy", wr->s->busy);
+ jk_print_prop_att_int(s, w, wr->name, "max_busy",
wr->s->max_busy);
+ jk_print_prop_att_int(s, w, wr->name, "time_to_recover_min",
rs_min);
+ jk_print_prop_att_int(s, w, wr->name, "time_to_recover_max",
rs_max);
}
}
@@ -1948,7 +1948,7 @@
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' %s lb worker '%s'",
- w->name, "displaying", lb->s->name);
+ w->name, "displaying", lb->name);
display_worker_lb(s, p, lb, l);
}
else {
@@ -1995,7 +1995,7 @@
JK_TRACE_ENTER(l);
if (jw->type == JK_LB_WORKER_TYPE) {
lb = (lb_worker_t *)jw->worker_private;
- name = lb->s->name;
+ name = lb->name;
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' producing edit form for lb worker '%s'",
@@ -2109,10 +2109,10 @@
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'",
- w->name, wr->s->name, lb_name);
+ w->name, wr->name, lb_name);
jk_putv(s, "<hr/><h3>Edit worker settings for ",
- wr->s->name, "</h3>\n", NULL);
+ wr->name, "</h3>\n", NULL);
status_start_form(s, p, "get", JK_STATUS_CMD_UPDATE, l);
jk_puts(s, "<table>\n");
@@ -2121,43 +2121,43 @@
jk_putv(s, "<tr><td> Active</td><td><input name=\"",
JK_STATUS_ARG_LBM_ACTIVATION, "\" type=\"radio\"", NULL);
jk_printf(s, " value=\"%d\"", JK_LB_ACTIVATION_ACTIVE);
- if (wr->s->activation == JK_LB_ACTIVATION_ACTIVE)
+ if (wr->activation == JK_LB_ACTIVATION_ACTIVE)
jk_puts(s, " checked=\"checked\"");
jk_puts(s, "/></td></tr>\n");
jk_putv(s, "<tr><td> Disabled</td><td><input name=\"",
JK_STATUS_ARG_LBM_ACTIVATION, "\" type=\"radio\"", NULL);
jk_printf(s, " value=\"%d\"", JK_LB_ACTIVATION_DISABLED);
- if (wr->s->activation == JK_LB_ACTIVATION_DISABLED)
+ if (wr->activation == JK_LB_ACTIVATION_DISABLED)
jk_puts(s, " checked=\"checked\"");
jk_puts(s, "/></td></tr>\n");
jk_putv(s, "<tr><td> Stopped</td><td><input name=\"",
JK_STATUS_ARG_LBM_ACTIVATION, "\" type=\"radio\"", NULL);
jk_printf(s, " value=\"%d\"", JK_LB_ACTIVATION_STOPPED);
- if (wr->s->activation == JK_LB_ACTIVATION_STOPPED)
+ if (wr->activation == JK_LB_ACTIVATION_STOPPED)
jk_puts(s, " checked=\"checked\"");
jk_puts(s, "/></td></tr>\n");
jk_putv(s, "<tr><td>", JK_STATUS_ARG_LBM_TEXT_FACTOR,
":</td><td><input name=\"",
JK_STATUS_ARG_LBM_FACTOR, "\" type=\"text\" ", NULL);
- jk_printf(s, "value=\"%d\"/></td></tr>\n", wr->s->lb_factor);
+ jk_printf(s, "value=\"%d\"/></td></tr>\n", wr->lb_factor);
jk_putv(s, "<tr><td>", JK_STATUS_ARG_LBM_TEXT_ROUTE,
":</td><td><input name=\"",
JK_STATUS_ARG_LBM_ROUTE, "\" type=\"text\" ", NULL);
- jk_printf(s, "value=\"%s\"/></td></tr>\n", wr->s->route);
+ jk_printf(s, "value=\"%s\"/></td></tr>\n", wr->route);
jk_putv(s, "<tr><td>", JK_STATUS_ARG_LBM_TEXT_REDIRECT,
":</td><td><input name=\"",
JK_STATUS_ARG_LBM_REDIRECT, "\" type=\"text\" ", NULL);
- jk_putv(s, "value=\"", wr->s->redirect, NULL);
+ jk_putv(s, "value=\"", wr->redirect, NULL);
jk_puts(s, "\"/></td></tr>\n");
jk_putv(s, "<tr><td>", JK_STATUS_ARG_LBM_TEXT_DOMAIN,
":</td><td><input name=\"",
JK_STATUS_ARG_LBM_DOMAIN, "\" type=\"text\" ", NULL);
- jk_putv(s, "value=\"", wr->s->domain, NULL);
+ jk_putv(s, "value=\"", wr->domain, NULL);
jk_puts(s, "\"/></td></tr>\n");
jk_putv(s, "<tr><td>", JK_STATUS_ARG_LBM_TEXT_DISTANCE,
":</td><td><input name=\"",
JK_STATUS_ARG_LBM_DISTANCE, "\" type=\"text\" ", NULL);
- jk_printf(s, "value=\"%d\"/></td></tr>\n", wr->s->distance);
+ jk_printf(s, "value=\"%d\"/></td></tr>\n", wr->distance);
jk_puts(s, "</table>\n");
jk_puts(s, "<br/><input type=\"submit\" value=\"Update
Worker\"/>\n</form>\n");
JK_TRACE_EXIT(l);
@@ -2206,7 +2206,7 @@
}
if (jw->type == JK_LB_WORKER_TYPE) {
lb = (lb_worker_t *)jw->worker_private;
- name = lb->s->name;
+ name = lb->name;
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' producing edit form for attribute '%s'
[%s] of all members of lb worker '%s'",
@@ -2234,46 +2234,46 @@
for (i = 0; i < lb->num_of_workers; i++) {
worker_record_t *wr = &(lb->lb_workers[i]);
- jk_putv(s, "<tr><td>", wr->s->name, "</td><td>\n", NULL);
+ jk_putv(s, "<tr><td>", wr->name, "</td><td>\n", NULL);
if (!strcmp(attribute, JK_STATUS_ARG_LBM_ACTIVATION)) {
jk_printf(s, "Active: <input name=\""
JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"radio\"", i);
jk_printf(s, " value=\"%d\"", JK_LB_ACTIVATION_ACTIVE);
- if (wr->s->activation == JK_LB_ACTIVATION_ACTIVE)
+ if (wr->activation == JK_LB_ACTIVATION_ACTIVE)
jk_puts(s, " checked=\"checked\"");
jk_puts(s, "/> | \n");
jk_printf(s, "Disabled: <input name=\""
JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"radio\"", i);
jk_printf(s, " value=\"%d\"", JK_LB_ACTIVATION_DISABLED);
- if (wr->s->activation == JK_LB_ACTIVATION_DISABLED)
+ if (wr->activation == JK_LB_ACTIVATION_DISABLED)
jk_puts(s, " checked=\"checked\"");
jk_puts(s, "/> | \n");
jk_printf(s, "Stopped: <input name=\""
JK_STATUS_ARG_MULT_VALUE_BASE "%d\" type=\"radio\"", i);
jk_printf(s, " value=\"%d\"", JK_LB_ACTIVATION_STOPPED);
- if (wr->s->activation == JK_LB_ACTIVATION_STOPPED)
+ if (wr->activation == JK_LB_ACTIVATION_STOPPED)
jk_puts(s, " checked=\"checked\"");
jk_puts(s, "/>\n");
}
else if (!strcmp(attribute, JK_STATUS_ARG_LBM_FACTOR)) {
jk_printf(s, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE
"%d\" type=\"text\"", i);
- jk_printf(s, "value=\"%d\"/>\n", wr->s->lb_factor);
+ jk_printf(s, "value=\"%d\"/>\n", wr->lb_factor);
}
else if (!strcmp(attribute, JK_STATUS_ARG_LBM_ROUTE)) {
jk_printf(s, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE
"%d\" type=\"text\"", i);
- jk_putv(s, "value=\"", wr->s->route, "\"/>\n", NULL);
+ jk_putv(s, "value=\"", wr->route, "\"/>\n", NULL);
}
else if (!strcmp(attribute, JK_STATUS_ARG_LBM_REDIRECT)) {
jk_printf(s, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE
"%d\" type=\"text\"", i);
- jk_putv(s, "value=\"", wr->s->redirect, "\"/>\n", NULL);
+ jk_putv(s, "value=\"", wr->redirect, "\"/>\n", NULL);
}
else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DOMAIN)) {
jk_printf(s, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE
"%d\" type=\"text\"", i);
- jk_putv(s, "value=\"", wr->s->domain, "\"/>\n", NULL);
+ jk_putv(s, "value=\"", wr->domain, "\"/>\n", NULL);
}
else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DISTANCE)) {
jk_printf(s, "<input name=\"" JK_STATUS_ARG_MULT_VALUE_BASE
"%d\" type=\"text\"", i);
- jk_printf(s, "value=\"%d\"/>\n", wr->s->distance);
+ jk_printf(s, "value=\"%d\"/>\n", wr->distance);
}
jk_puts(s, "</td></tr>");
@@ -2299,7 +2299,7 @@
JK_TRACE_ENTER(l);
if (jw->type == JK_LB_WORKER_TYPE) {
lb = (lb_worker_t *)jw->worker_private;
- name = lb->s->name;
+ name = lb->name;
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' committing changes for lb worker '%s'",
@@ -2400,40 +2400,40 @@
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' committing changes for sub worker '%s' of
lb worker '%s'",
- w->name, wr->s->name, lb_name);
+ w->name, wr->name, lb_name);
if (status_get_string(p, JK_STATUS_ARG_LBM_ACTIVATION, NULL, &arg, l) ==
JK_TRUE) {
i = jk_lb_get_activation_code(arg);
- if (i != wr->s->activation && i >= 0 && i <= JK_LB_ACTIVATION_MAX) {
- wr->s->activation = i;
+ 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->s->name, lb_name, jk_lb_get_activation(wr, l));
+ w->name, wr->name, lb_name, jk_lb_get_activation(wr, l));
rc |= 1;
}
}
i = status_get_int(p, JK_STATUS_ARG_LBM_FACTOR,
- wr->s->lb_factor, l);
- if (i != wr->s->lb_factor && i > 0) {
+ wr->lb_factor, l);
+ if (i != wr->lb_factor && i > 0) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'lbfactor' for sub worker '%s' of
lb worker '%s' to '%i'",
- w->name, wr->s->name, lb_name, i);
- wr->s->lb_factor = i;
+ w->name, wr->name, lb_name, i);
+ wr->lb_factor = i;
/* Recalculate the load multiplicators wrt. lb_factor */
rc |= 2;
}
if ((rv = status_get_string(p, JK_STATUS_ARG_LBM_ROUTE,
NULL, &arg, l)) == JK_TRUE) {
- if (strncmp(wr->s->route, arg, JK_SHM_STR_SIZ)) {
+ if (strncmp(wr->route, arg, JK_SHM_STR_SIZ)) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'route' for sub worker '%s' of
lb worker '%s' to '%s'",
- w->name, wr->s->name, lb_name, arg);
- strncpy(wr->s->route, arg, JK_SHM_STR_SIZ);
- if (!wr->s->domain[0]) {
- char * id_domain = strchr(wr->s->route, '.');
+ w->name, wr->name, lb_name, arg);
+ strncpy(wr->route, arg, JK_SHM_STR_SIZ);
+ if (!wr->domain[0]) {
+ char * id_domain = strchr(wr->route, '.');
if (id_domain) {
*id_domain = '\0';
- strcpy(wr->s->domain, wr->s->route);
+ strcpy(wr->domain, wr->route);
*id_domain = '.';
}
}
@@ -2441,30 +2441,31 @@
}
if ((rv = status_get_string(p, JK_STATUS_ARG_LBM_REDIRECT,
NULL, &arg, l)) == JK_TRUE) {
- if (strncmp(wr->s->redirect, arg, JK_SHM_STR_SIZ)) {
+ if (strncmp(wr->redirect, arg, JK_SHM_STR_SIZ)) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'redirect' for sub worker '%s'
of lb worker '%s' to '%s'",
- w->name, wr->s->name, lb_name, arg);
- strncpy(wr->s->redirect, arg, JK_SHM_STR_SIZ);
+ w->name, wr->name, lb_name, arg);
+ strncpy(wr->redirect, arg, JK_SHM_STR_SIZ);
}
}
if ((rv = status_get_string(p, JK_STATUS_ARG_LBM_DOMAIN,
NULL, &arg, l)) == JK_TRUE) {
- if (strncmp(wr->s->domain, arg, JK_SHM_STR_SIZ)) {
+ if (strncmp(wr->domain, arg, JK_SHM_STR_SIZ)) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'domain' for sub worker '%s' of
lb worker '%s' to '%s'",
- w->name, wr->s->name, lb_name, arg);
- strncpy(wr->s->domain, arg, JK_SHM_STR_SIZ);
+ w->name, wr->name, lb_name, arg);
+ strncpy(wr->domain, arg, JK_SHM_STR_SIZ);
}
}
i = status_get_int(p, JK_STATUS_ARG_LBM_DISTANCE,
- wr->s->distance, l);
- if (i != wr->s->distance && i > 0) {
+ wr->distance, l);
+ if (i != wr->distance && i > 0) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'distance' for sub worker '%s' of
lb worker '%s' to '%i'",
- w->name, wr->s->name, lb_name, i);
- wr->s->distance = i;
+ w->name, wr->name, lb_name, i);
+ wr->distance = i;
}
+ wr->sequence++;
return rc;
}
@@ -2515,7 +2516,7 @@
}
if (jw->type == JK_LB_WORKER_TYPE) {
lb = (lb_worker_t *)jw->worker_private;
- name = lb->s->name;
+ name = lb->name;
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' committing changes for attribute '%s'
[%s] of all members of lb worker '%s'",
@@ -2535,22 +2536,22 @@
snprintf(vname, 32-1, "" JK_STATUS_ARG_MULT_VALUE_BASE "%d", j);
if (!strcmp(attribute, JK_STATUS_ARG_LBM_FACTOR)) {
- i = status_get_int(p, vname, wr->s->lb_factor, l);
- if (i != wr->s->lb_factor && i > 0) {
+ i = status_get_int(p, vname, wr->lb_factor, l);
+ if (i != wr->lb_factor && i > 0) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'lbfactor' for sub
worker '%s' of lb worker '%s' to '%i'",
- w->name, wr->s->name, name, i);
- wr->s->lb_factor = i;
+ w->name, wr->name, name, i);
+ wr->lb_factor = i;
rc = 2;
}
}
else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DISTANCE)) {
- i = status_get_int(p, vname, wr->s->distance, l);
- if (i != wr->s->distance && i > 0) {
+ i = status_get_int(p, vname, wr->distance, l);
+ if (i != wr->distance && i > 0) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'distance' for sub
worker '%s' of lb worker '%s' to '%i'",
- w->name, wr->s->name, name, i);
- wr->s->lb_factor = i;
+ w->name, wr->name, name, i);
+ wr->lb_factor = i;
}
}
else {
@@ -2558,27 +2559,27 @@
if (!strcmp(attribute, JK_STATUS_ARG_LBM_ACTIVATION)) {
if (rv == JK_TRUE) {
i = jk_lb_get_activation_code(arg);
- if (i != wr->s->activation && i >= 0 && i <=
JK_LB_ACTIVATION_MAX) {
- wr->s->activation = i;
+ 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->s->name, name,
jk_lb_get_activation(wr, l));
+ w->name, wr->name, name,
jk_lb_get_activation(wr, l));
rc = 1;
}
}
}
else if (!strcmp(attribute, JK_STATUS_ARG_LBM_ROUTE)) {
if (rv == JK_TRUE) {
- if (strncmp(wr->s->route, arg, JK_SHM_STR_SIZ)) {
+ if (strncmp(wr->route, arg, JK_SHM_STR_SIZ)) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'route' for sub
worker '%s' of lb worker '%s' to '%s'",
- w->name, wr->s->name, name, arg);
- strncpy(wr->s->route, arg, JK_SHM_STR_SIZ);
- if (!wr->s->domain[0]) {
- char * id_domain = strchr(wr->s->route, '.');
+ w->name, wr->name, name, arg);
+ strncpy(wr->route, arg, JK_SHM_STR_SIZ);
+ if (!wr->domain[0]) {
+ char * id_domain = strchr(wr->route, '.');
if (id_domain) {
*id_domain = '\0';
- strcpy(wr->s->domain, wr->s->route);
+ strcpy(wr->domain, wr->route);
*id_domain = '.';
}
}
@@ -2587,31 +2588,34 @@
}
else if (!strcmp(attribute, JK_STATUS_ARG_LBM_REDIRECT)) {
if (rv == JK_TRUE) {
- if (strncmp(wr->s->redirect, arg, JK_SHM_STR_SIZ)) {
+ if (strncmp(wr->redirect, arg, JK_SHM_STR_SIZ)) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'redirect' for
sub worker '%s' of lb worker '%s' to '%s'",
- w->name, wr->s->name, name, arg);
- strncpy(wr->s->redirect, arg, JK_SHM_STR_SIZ);
+ w->name, wr->name, name, arg);
+ strncpy(wr->redirect, arg, JK_SHM_STR_SIZ);
}
}
}
else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DOMAIN)) {
if (rv == JK_TRUE) {
- if (strncmp(wr->s->domain, arg, JK_SHM_STR_SIZ)) {
+ if (strncmp(wr->domain, arg, JK_SHM_STR_SIZ)) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' setting 'domain' for
sub worker '%s' of lb worker '%s' to '%s'",
- w->name, wr->s->name, name, arg);
- strncpy(wr->s->domain, arg, JK_SHM_STR_SIZ);
+ w->name, wr->name, name, arg);
+ strncpy(wr->domain, arg, JK_SHM_STR_SIZ);
}
}
}
}
+ wr->sequence++;
}
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);
}
JK_TRACE_EXIT(l);
}
@@ -2987,7 +2991,9 @@
JK_TRACE_EXIT(l);
return JK_FALSE;
}
- rc = commit_member(s, p, wr, lb->s->name, l);
+ rc = commit_member(s, p, wr, lb->name, l);
+ lb->sequence++;
+ jk_lb_push(lb, l);
if (rc & 1)
reset_lb_values(lb, l);
if (rc & 2)
Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?rev=610623&r1=610622&r2=610623&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Wed Jan 9
16:52:57 2008
@@ -44,6 +44,10 @@
<subsection name="Native">
<changelog>
<update>
+ SHM: Use local copies of read mostly attributes of lb sub workers
+ in lb and status worker. (rjung)
+ </update>
+ <update>
Status: Add "dump" action to dump our initial configuration. (rjung)
</update>
<update>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]