mturk       2004/11/12 10:45:24

  Modified:    jk/native/apache-1.3 mod_jk.c
               jk/native/apache-2.0 mod_jk.c
               jk/native/common jk_ajp_common.c jk_service.h jk_util.c
                        jk_util.h
               jk/native/iis jk_isapi_plugin.c
  Log:
  Added custom 'retries' for worker, so we don't depend on
  default setting. If set to a number grater then 3, it will sleep
  for 100ms on retry greater then 3 and then try again.
  
  Revision  Changes    Path
  1.52      +3 -1      jakarta-tomcat-connectors/jk/native/apache-1.3/mod_jk.c
  
  Index: mod_jk.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-1.3/mod_jk.c,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- mod_jk.c  12 Nov 2004 08:42:47 -0000      1.51
  +++ mod_jk.c  12 Nov 2004 18:45:24 -0000      1.52
  @@ -1554,6 +1554,8 @@
   
               jk_init_ws_service(&s);
   
  +            /* Update retries for this worker */
  +            s.retries = worker->retries;
               s.ws_private = &private_data;
               s.pool = &private_data.p;
   #ifndef NO_GETTIMEOFDAY
  
  
  
  1.101     +5 -2      jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c
  
  Index: mod_jk.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c,v
  retrieving revision 1.100
  retrieving revision 1.101
  diff -u -r1.100 -r1.101
  --- mod_jk.c  12 Nov 2004 09:02:04 -0000      1.100
  +++ mod_jk.c  12 Nov 2004 18:45:24 -0000      1.101
  @@ -1732,7 +1732,9 @@
           }
   
           if (worker) {
  +#ifndef NO_GETTIMEOFDAY
               struct timeval tv_begin, tv_end;
  +#endif
               int rc = JK_FALSE;
               apache_private_data_t private_data;
               jk_ws_service_t s;
  @@ -1744,7 +1746,8 @@
               private_data.r = r;
   
               jk_init_ws_service(&s);
  -
  +            /* Update retries for this worker */
  +            s.retries = worker->retries;
               s.ws_private = &private_data;
               s.pool = &private_data.p;
   #ifndef NO_GETTIMEOFDAY
  
  
  
  1.63      +39 -5     
jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.c
  
  Index: jk_ajp_common.c
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.c,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- jk_ajp_common.c   12 Nov 2004 12:47:37 -0000      1.62
  +++ jk_ajp_common.c   12 Nov 2004 18:45:24 -0000      1.63
  @@ -35,6 +35,24 @@
   #include "novsock2.h"
   #endif
   
  +/* Sleep for 100ms */
  +static void jk_sleep_def()
  +{
  +#ifdef OS2
  +    DosSleep(100);
  +#elif defined(BEOS)
  +    snooze(100 * 1000);
  +#elif defined(NETWARE)
  +    delay(100);
  +#elif defined(WIN32)
  +    Sleep(100);
  +#else
  +    struct timeval tv;
  +    tv.tv_usec = 100 * 1000;
  +    tv.tv_sec = 0;
  +    select(0, NULL, NULL, NULL, &tv);
  +#endif
  +} 
   
   const char *response_trans_headers[] = {
       "Content-Type",
  @@ -1442,8 +1460,6 @@
       return JK_FALSE;
   }
   
  -#define JK_RETRIES 3
  -
   /*
    * service is now splitted in ajp_send_request and ajp_get_reply
    * much more easier to do errors recovery
  @@ -1497,7 +1513,7 @@
            * JK_RETRIES could be replaced by the number of workers in
            * a load-balancing configuration 
            */
  -        for (i = 0; i < JK_RETRIES; i++) {
  +        for (i = 0; i < s->retries; i++) {
               /*
                * We're using reqmsg which hold initial request
                * if Tomcat is stopped or restarted, we will pass reqmsg
  @@ -1546,6 +1562,10 @@
                       jk_log(l, JK_LOG_INFO,
                              "Receiving from tomcat failed, "
                              "recoverable operation attempt=%d\n", i);
  +                    /* Check for custom retries */
  +                    if (i >= JK_RETRIES) {
  +                        jk_sleep_def();
  +                    }
                   }
               }
   
  @@ -1562,8 +1582,8 @@
               }
               else {
                   jk_log(l, JK_LOG_INFO,
  -                       "sending request to tomcat failed in send loop. "
  -                       "retry=%d\n", i);
  +                       "Sending request to tomcat failed,  "
  +                       "recoverable operation attempt=%d\n", i);
               }
   
           }
  @@ -1728,6 +1748,20 @@
                  "setting recovery opts to %d\n",
                  p->recovery_opts);
   
  +        pThis->retries =
  +            jk_get_worker_retries(props, p->name,
  +                                  JK_RETRIES);
  +        if (pThis->retries < 1) {
  +            jk_log(l, JK_LOG_INFO,
  +                   "number of retries must be grater then 1. Setting to 
default=%d\n",
  +                   JK_RETRIES);
  +            pThis->retries = JK_RETRIES;
  +        }
  +        else {
  +            jk_log(l, JK_LOG_DEBUG,
  +                   "setting number of retries to %d\n",
  +                    pThis->retries);
  +        }
           /* 
            *  Need to initialize secret here since we could return from inside
            *  of the following loop
  
  
  
  1.20      +11 -1     jakarta-tomcat-connectors/jk/native/common/jk_service.h
  
  Index: jk_service.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_service.h,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- jk_service.h      8 Nov 2004 13:33:21 -0000       1.19
  +++ jk_service.h      12 Nov 2004 18:45:24 -0000      1.20
  @@ -34,6 +34,8 @@
   #include "jk_uri_worker_map.h"
   #include "jk_msg_buff.h"
   
  +#define JK_RETRIES 3
  +
   #ifdef __cplusplus
   extern "C"
   {
  @@ -210,6 +212,9 @@
       jk_msg_buf_t *reco_buf;
       int reco_status;
   
  +    /* Number of retries. Defaults to JK_RETRIES
  +     */
  +    int retries;
       /*
        * Send the response headers to the browser.
        */
  @@ -340,6 +345,11 @@
   struct jk_worker
   {
   
  +    /*
  +     * Public property to enable the number of retry attempts
  +     * on this worker.
  +     */
  +    int retries;
       /* 
        * A 'this' pointer which is used by the subclasses of this class to
        * point to data/functions which are specific to a given protocol 
  
  
  
  1.38      +17 -1     jakarta-tomcat-connectors/jk/native/common/jk_util.c
  
  Index: jk_util.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.c,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- jk_util.c 12 Nov 2004 07:52:23 -0000      1.37
  +++ jk_util.c 12 Nov 2004 18:45:24 -0000      1.38
  @@ -60,6 +60,7 @@
   #define WORKER_AJP12                ("ajp12")
   #define DEFAULT_WORKER_TYPE         JK_AJP12_WORKER_NAME
   #define SECRET_KEY_OF_WORKER        ("secretkey")
  +#define RETRIES_OF_WORKER           ("retries")
   
   #define DEFAULT_WORKER              JK_AJP12_WORKER_NAME
   #define WORKER_LIST_PROPERTY_NAME   ("worker.list")
  @@ -522,6 +523,20 @@
       return jk_map_get_int(m, buf, def);
   }
   
  +int jk_get_worker_retries(jk_map_t *m, const char *wname, int def)
  +{
  +    char buf[1024];
  +
  +    if (!m || !wname) {
  +        return -1;
  +    }
  +
  +    sprintf(buf, "%s.%s.%s", PREFIX_OF_WORKER, wname,
  +            RETRIES_OF_WORKER);
  +
  +    return jk_map_get_int(m, buf, def);
  +}
  +
   int jk_get_worker_recovery_opts(jk_map_t *m, const char *wname, int def)
   {
       char buf[1024];
  @@ -988,4 +1003,5 @@
       s->attributes_values = NULL;
       s->num_attributes = 0;
       s->jvm_route = NULL;
  +    s->retries = JK_RETRIES;
   }
  
  
  
  1.21      +3 -1      jakarta-tomcat-connectors/jk/native/common/jk_util.h
  
  Index: jk_util.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.h,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- jk_util.h 11 Nov 2004 09:44:29 -0000      1.20
  +++ jk_util.h 12 Nov 2004 18:45:24 -0000      1.21
  @@ -72,6 +72,8 @@
   
   char *jk_get_worker_secret_key(jk_map_t *m, const char *wname);
   
  +int jk_get_worker_retries(jk_map_t *m, const char *wname, int def);
  +
   void jk_set_log_format(const char *logformat);
   
   int jk_get_worker_list(jk_map_t *m, char ***list, unsigned *num_of_wokers);
  
  
  
  1.29      +3 -1      jakarta-tomcat-connectors/jk/native/iis/jk_isapi_plugin.c
  
  Index: jk_isapi_plugin.c
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/iis/jk_isapi_plugin.c,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- jk_isapi_plugin.c 12 Nov 2004 11:56:18 -0000      1.28
  +++ jk_isapi_plugin.c 12 Nov 2004 18:45:24 -0000      1.29
  @@ -888,6 +888,8 @@
   
               if (worker) {
                   jk_endpoint_t *e = NULL;
  +                /* Update retries for this worker */
  +                s.retries = worker->retries;                
                   if (worker->get_endpoint(worker, &e, logger)) {
                       int recover = JK_FALSE;
                       if (e->service(e, &s, logger, &recover)) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to