static void commit_worker()

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);
    }
}