in native/common/jk_status.c [3246:3368]
static void commit_worker(jk_ws_service_t *s,
status_endpoint_t *p,
jk_worker_t *jw,
jk_log_context_t *l)
{
const char *name = NULL;
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);
if (jw->type == JK_LB_WORKER_TYPE) {
lb = (lb_worker_t *)jw->worker_private;
name = lb->name;
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
"Status worker '%s' committing changes for lb worker '%s'",
w->name, name);
}
else {
jk_log(l, JK_LOG_WARNING,
"Status worker '%s' worker type not implemented",
w->name);
JK_TRACE_EXIT(l);
return;
}
if (!lb) {
jk_log(l, JK_LOG_WARNING,
"Status worker '%s' lb structure is (null)",
w->name);
JK_TRACE_EXIT(l);
return;
}
i = status_get_int(p, JK_STATUS_ARG_LB_RETRIES,
lb->retries, l);
if (i != lb->retries && i > 0) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' changing 'retries' for lb worker '%s' from '%d' to '%d'",
w->name, name, lb->retries, i);
lb->retries = i;
sync_needed = JK_TRUE;
}
i = status_get_int(p, JK_STATUS_ARG_LB_RETRY_INT,
lb->retry_interval, l);
if (i != lb->retry_interval && i > 0) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' changing 'retry_interval' for lb worker '%s' from '%d' to '%d'",
w->name, name, lb->retry_interval, i);
lb->retry_interval = i;
sync_needed = JK_TRUE;
}
i = status_get_int(p, JK_STATUS_ARG_LB_RECOVER_TIME,
lb->recover_wait_time, l);
if (i != lb->recover_wait_time && i > 0) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' changing 'recover_time' for lb worker '%s' from '%d' to '%d'",
w->name, name, lb->recover_wait_time, i);
lb->recover_wait_time = i;
sync_needed = JK_TRUE;
}
i = status_get_int(p, JK_STATUS_ARG_LB_ERROR_ESCALATION_TIME,
lb->error_escalation_time, l);
if (i != lb->error_escalation_time && i > 0) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' changing 'error_escalation_time' for lb worker '%s' from '%d' to '%d'",
w->name, name, lb->error_escalation_time, i);
lb->error_escalation_time = i;
sync_needed = JK_TRUE;
}
i = status_get_int(p, JK_STATUS_ARG_LB_MAX_REPLY_TIMEOUTS,
lb->max_reply_timeouts, l);
if (i != lb->max_reply_timeouts && i >= 0) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' changing 'max_reply_timeouts' for lb worker '%s' from '%d' to '%d'",
w->name, name, lb->max_reply_timeouts, i);
lb->max_reply_timeouts = i;
sync_needed = JK_TRUE;
}
i = status_get_bool(p, JK_STATUS_ARG_LB_STICKY, lb->sticky_session, l);
if (i != lb->sticky_session) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' changing 'sticky_session' for lb worker '%s' from '%d' to '%d'",
w->name, name, lb->sticky_session, i);
lb->sticky_session = i;
sync_needed = JK_TRUE;
}
i = status_get_bool(p, JK_STATUS_ARG_LB_STICKY_FORCE, lb->sticky_session_force, l);
if (i != lb->sticky_session_force) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' changing 'sticky_session_force' for lb worker '%s' from '%d' to '%d'",
w->name, name, lb->sticky_session_force, 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) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' changing 'method' for lb worker '%s' from '%s' to '%s'",
w->name, name, jk_lb_get_method(lb, l), jk_lb_get_method_direct(i, 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) {
jk_log(l, JK_LOG_INFO,
"Status worker '%s' changing 'lock' for lb worker '%s' from '%s' to '%s'",
w->name, name, jk_lb_get_lock(lb, l), jk_lb_get_lock_direct(i, l));
lb->lblock = i;
sync_needed = JK_TRUE;
}
}
if (sync_needed == JK_TRUE) {
lb->sequence = -1;
jk_lb_push(lb, JK_TRUE, JK_FALSE, l);
}
}