View | Details | Raw Unified | Return to bug 62408
Collapse All | Expand All

(-)a/native/common/jk_ajp_common.c (+3 lines)
Lines 3043-3048 int ajp_init(jk_worker_t *pThis, Link Here
3043
        p->retries =
3043
        p->retries =
3044
            jk_get_worker_retries(props, p->name,
3044
            jk_get_worker_retries(props, p->name,
3045
                                  JK_RETRIES);
3045
                                  JK_RETRIES);
3046
        p->lb_retries =
3047
            jk_get_worker_lb_retries(props, p->name,
3048
                                  JK_LB_RETRIES);
3046
3049
3047
        p->max_packet_size =
3050
        p->max_packet_size =
3048
            jk_get_max_packet_size(props, p->name);
3051
            jk_get_max_packet_size(props, p->name);
(-)a/native/common/jk_ajp_common.h (+7 lines)
Lines 370-375 struct ajp_worker Link Here
370
     */
370
     */
371
    int retries;
371
    int retries;
372
372
373
    /*
374
     * Public property used in load balancer workers, meaning
375
     * the maximum number of failover attempts between ajp
376
     * workers of cluster.
377
     */
378
    int lb_retries;
379
373
    unsigned int max_packet_size;  /*  Maximum AJP Packet size */
380
    unsigned int max_packet_size;  /*  Maximum AJP Packet size */
374
381
375
    int retry_interval;            /*  Number of milliseconds to sleep before doing a retry */
382
    int retry_interval;            /*  Number of milliseconds to sleep before doing a retry */
(-)a/native/common/jk_lb_worker.c (-1 / +7 lines)
Lines 1225-1230 static int JK_METHOD service(jk_endpoint_t *e, Link Here
1225
    if (p->worker->sequence < p->worker->s->h.sequence)
1225
    if (p->worker->sequence < p->worker->s->h.sequence)
1226
        jk_lb_pull(p->worker, JK_FALSE, l);
1226
        jk_lb_pull(p->worker, JK_FALSE, l);
1227
    for (i = 0; i < num_of_workers; i++) {
1227
    for (i = 0; i < num_of_workers; i++) {
1228
        jk_log(l, JK_LOG_DEBUG, "LB - num_of_workers: %d, retry: %d, lb_retries: %d", num_of_workers, i, p->worker->lb_retries);
1228
        lb_sub_worker_t *rec = &(p->worker->lb_workers[i]);
1229
        lb_sub_worker_t *rec = &(p->worker->lb_workers[i]);
1229
        ajp_worker_t *aw = (ajp_worker_t *)rec->worker->worker_private;
1230
        ajp_worker_t *aw = (ajp_worker_t *)rec->worker->worker_private;
1230
        if (rec->s->state == JK_LB_STATE_BUSY) {
1231
        if (rec->s->state == JK_LB_STATE_BUSY) {
Lines 1271-1277 static int JK_METHOD service(jk_endpoint_t *e, Link Here
1271
               "service sticky_session=%d id='%s'",
1272
               "service sticky_session=%d id='%s'",
1272
               p->worker->sticky_session, sessionid ? sessionid : "empty");
1273
               p->worker->sticky_session, sessionid ? sessionid : "empty");
1273
1274
1274
    while (recoverable == JK_TRUE) {
1275
    while (recoverable == JK_TRUE && attempt <= p->worker->lb_retries) {
1276
        if (JK_IS_DEBUG_LEVEL(l))
1277
            jk_log(l, JK_LOG_DEBUG, "attempt %d, max attempts %d",
1278
                    attempt, p->worker->lb_retries);
1275
        if (attempt >= num_of_workers) {
1279
        if (attempt >= num_of_workers) {
1276
            retry++;
1280
            retry++;
1277
            if (retry >= p->worker->retries) {
1281
            if (retry >= p->worker->retries) {
Lines 1903-1908 static int JK_METHOD init(jk_worker_t *pThis, Link Here
1903
    p->worker.we = we;
1907
    p->worker.we = we;
1904
    p->retries = jk_get_worker_retries(props, p->name,
1908
    p->retries = jk_get_worker_retries(props, p->name,
1905
                                       JK_RETRIES);
1909
                                       JK_RETRIES);
1910
    p->lb_retries = jk_get_worker_lb_retries(props, p->name,
1911
                                       JK_LB_RETRIES);
1906
    p->retry_interval =
1912
    p->retry_interval =
1907
            jk_get_worker_retry_interval(props, p->name,
1913
            jk_get_worker_retry_interval(props, p->name,
1908
                                        JK_SLEEP_DEF);
1914
                                        JK_SLEEP_DEF);
(-)a/native/common/jk_lb_worker.h (+1 lines)
Lines 187-192 struct lb_worker Link Here
187
    int          error_escalation_time;
187
    int          error_escalation_time;
188
    int          max_reply_timeouts;
188
    int          max_reply_timeouts;
189
    int          retries;
189
    int          retries;
190
    int          lb_retries;
190
    int          retry_interval;
191
    int          retry_interval;
191
    int          lbmethod;
192
    int          lbmethod;
192
    int          lblock;
193
    int          lblock;
(-)a/native/common/jk_service.h (+1 lines)
Lines 36-41 Link Here
36
#include "jk_msg_buff.h"
36
#include "jk_msg_buff.h"
37
37
38
#define JK_RETRIES 2
38
#define JK_RETRIES 2
39
#define JK_LB_RETRIES 2
39
40
40
#ifdef __cplusplus
41
#ifdef __cplusplus
41
extern "C"
42
extern "C"
(-)a/native/common/jk_util.c (+21 lines)
Lines 111-116 Link Here
111
#define DEFAULT_WORKER_TYPE         JK_AJP13_WORKER_NAME
111
#define DEFAULT_WORKER_TYPE         JK_AJP13_WORKER_NAME
112
#define SECRET_KEY_OF_WORKER        "secretkey"
112
#define SECRET_KEY_OF_WORKER        "secretkey"
113
#define RETRIES_OF_WORKER           "retries"
113
#define RETRIES_OF_WORKER           "retries"
114
#define LB_RETRIES_OF_WORKER        "lb_retries"
114
#define STATUS_FAIL_OF_WORKER       "fail_on_status"
115
#define STATUS_FAIL_OF_WORKER       "fail_on_status"
115
116
116
#define DEFAULT_WORKER              JK_AJP13_WORKER_NAME
117
#define DEFAULT_WORKER              JK_AJP13_WORKER_NAME
Lines 232-237 static const char *unique_properties[] = { Link Here
232
    STYLE_SHEET_OF_WORKER,
233
    STYLE_SHEET_OF_WORKER,
233
    READ_ONLY_OF_WORKER,
234
    READ_ONLY_OF_WORKER,
234
    RETRIES_OF_WORKER,
235
    RETRIES_OF_WORKER,
236
    LB_RETRIES_OF_WORKER,
235
    WORKER_MAINTAIN_PROPERTY_NAME,
237
    WORKER_MAINTAIN_PROPERTY_NAME,
236
    NAMESPACE_OF_WORKER,
238
    NAMESPACE_OF_WORKER,
237
    XML_NAMESPACE_OF_WORKER,
239
    XML_NAMESPACE_OF_WORKER,
Lines 342-347 static const char *supported_properties[] = { Link Here
342
    BAD_RATING_OF_WORKER,
344
    BAD_RATING_OF_WORKER,
343
    SECRET_KEY_OF_WORKER,
345
    SECRET_KEY_OF_WORKER,
344
    RETRIES_OF_WORKER,
346
    RETRIES_OF_WORKER,
347
    LB_RETRIES_OF_WORKER,
345
    STATUS_FAIL_OF_WORKER,
348
    STATUS_FAIL_OF_WORKER,
346
    LIST_PROPERTY_NAME,
349
    LIST_PROPERTY_NAME,
347
    MAINTAIN_PROPERTY_NAME,
350
    MAINTAIN_PROPERTY_NAME,
Lines 1245-1250 int jk_get_worker_retries(jk_map_t *m, const char *wname, int def) Link Here
1245
    return rv;
1248
    return rv;
1246
}
1249
}
1247
1250
1251
int jk_get_worker_lb_retries(jk_map_t *m, const char *wname, int def)
1252
{
1253
    char buf[1024];
1254
    int rv;
1255
    if (!m || !wname) {
1256
        return -1;
1257
    }
1258
1259
    MAKE_WORKER_PARAM(LB_RETRIES_OF_WORKER);
1260
1261
    rv = jk_map_get_int(m, buf, def);
1262
    if (rv < 1)
1263
        rv = 1;
1264
1265
    return rv;
1266
}
1267
1268
1248
int jk_get_worker_recovery_opts(jk_map_t *m, const char *wname, int def)
1269
int jk_get_worker_recovery_opts(jk_map_t *m, const char *wname, int def)
1249
{
1270
{
1250
    char buf[PARAM_BUFFER_SIZE];
1271
    char buf[PARAM_BUFFER_SIZE];

Return to bug 62408