Author: rjung
Date: Sun Jan 13 18:28:27 2008
New Revision: 611696

URL: http://svn.apache.org/viewvc?rev=611696&view=rev
Log:
Allow dynamic setting of reply timeout using the httpd environment
variable JK_REPLY_TIMEOUT.

Modified:
    tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c
    tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
    tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
    tomcat/connectors/trunk/jk/native/common/jk_service.h
    tomcat/connectors/trunk/jk/native/common/jk_util.c
    tomcat/connectors/trunk/jk/xdocs/generic_howto/timeouts.xml
    tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
    tomcat/connectors/trunk/jk/xdocs/reference/workers.xml

Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c?rev=611696&r1=611695&r2=611696&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c (original)
+++ tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c Sun Jan 13 18:28:27 
2008
@@ -70,6 +70,7 @@
 #define JK_ENV_SESSION              ("SSL_SESSION_ID")
 #define JK_ENV_KEY_SIZE             ("SSL_CIPHER_USEKEYSIZE")
 #define JK_ENV_CERTCHAIN_PREFIX     ("SSL_CLIENT_CERT_CHAIN_")
+#define JK_ENV_REPLY_TIMEOUT        ("JK_REPLY_TIMEOUT")
 #define JK_ENV_WORKER_NAME          ("JK_WORKER_NAME")
 #define JK_NOTE_WORKER_NAME         ("JK_WORKER_NAME")
 #define JK_NOTE_WORKER_TYPE         ("JK_WORKER_TYPE")
@@ -610,6 +611,7 @@
     int size;
     request_rec *r = private_data->r;
     char *ssl_temp = NULL;
+    const char *reply_timeout = NULL;
 
     /* Copy in function pointers (which are really methods) */
     s->start_response = ws_start_response;
@@ -639,6 +641,10 @@
         s->flush_packets = 1;
     if (conf->options & JK_OPT_FLUSHEADER)
         s->flush_header = 1;
+
+    reply_timeout = apr_table_get(r->subprocess_env, "JK_REPLY_TIMEOUT");
+    if (reply_timeout)
+        s->reply_timeout = atoi(reply_timeout);
 
     if (conf->options & JK_OPT_DISABLEREUSE)
         s->disable_reuse = 1;

Modified: tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c?rev=611696&r1=611695&r2=611696&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c (original)
+++ tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c Sun Jan 13 18:28:27 
2008
@@ -112,6 +112,7 @@
 #define JK_ENV_SESSION              ("SSL_SESSION_ID")
 #define JK_ENV_KEY_SIZE             ("SSL_CIPHER_USEKEYSIZE")
 #define JK_ENV_CERTCHAIN_PREFIX     ("SSL_CLIENT_CERT_CHAIN_")
+#define JK_ENV_REPLY_TIMEOUT        ("JK_REPLY_TIMEOUT")
 #define JK_ENV_WORKER_NAME          ("JK_WORKER_NAME")
 #define JK_NOTE_WORKER_NAME         ("JK_WORKER_NAME")
 #define JK_NOTE_WORKER_TYPE         ("JK_WORKER_TYPE")
@@ -621,10 +622,10 @@
 static int init_ws_service(apache_private_data_t * private_data,
                            jk_ws_service_t *s, jk_server_conf_t * conf)
 {
+    int size;
     request_rec *r = private_data->r;
-
     char *ssl_temp = NULL;
-    int size;
+    const char *reply_timeout = NULL;
 
     /* Copy in function pointers (which are really methods) */
     s->start_response = ws_start_response;
@@ -652,6 +653,10 @@
         s->flush_packets = 1;
     if (conf->options & JK_OPT_FLUSHEADER)
         s->flush_header = 1;
+
+    reply_timeout = apr_table_get(r->subprocess_env, "JK_REPLY_TIMEOUT");
+    if (reply_timeout)
+        s->reply_timeout = atoi(reply_timeout);
 
     if (conf->options & JK_OPT_DISABLEREUSE)
         s->disable_reuse = 1;

Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c?rev=611696&r1=611695&r2=611696&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Sun Jan 13 
18:28:27 2008
@@ -1815,10 +1815,14 @@
     /* Start read all reply message */
     while (1) {
         int rc = 0;
+        /* Allow to overwrite reply_timeout on a per URL basis via service 
struct */
+        int reply_timeout = s->reply_timeout;
 
+        if (reply_timeout < 0)
+            reply_timeout = p->worker->reply_timeout;
         /* If we set a reply timeout, check if something is available */
-        if (p->worker->reply_timeout > 0) {
-            if (jk_is_input_event(p->sd, p->worker->reply_timeout, l) ==
+        if (reply_timeout > 0) {
+            if (jk_is_input_event(p->sd, reply_timeout, l) ==
                 JK_FALSE) {
                 p->last_errno = errno;
                 jk_log(l, JK_LOG_ERROR,

Modified: tomcat/connectors/trunk/jk/native/common/jk_service.h
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_service.h?rev=611696&r1=611695&r2=611696&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_service.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_service.h Sun Jan 13 18:28:27 
2008
@@ -222,6 +222,11 @@
     int flush_header;
 
     /*
+     * If >= 0, overwrite the worker reply_timeout
+     */
+    int reply_timeout;
+
+    /*
      * JK_TRUE if response headers have been sent back
      */
     int response_started;

Modified: tomcat/connectors/trunk/jk/native/common/jk_util.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_util.c?rev=611696&r1=611695&r2=611696&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_util.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_util.c Sun Jan 13 18:28:27 2008
@@ -1867,6 +1867,7 @@
     s->reco_status = RECO_NONE;
     s->flush_packets = JK_FALSE;
     s->flush_header = JK_FALSE;
+    s->reply_timeout = -1;
     s->response_started = JK_FALSE;
     s->http_response_status = JK_HTTP_OK;
     s->uw_map = NULL;

Modified: tomcat/connectors/trunk/jk/xdocs/generic_howto/timeouts.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/generic_howto/timeouts.xml?rev=611696&r1=611695&r2=611696&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/generic_howto/timeouts.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/generic_howto/timeouts.xml Sun Jan 13 
18:28:27 2008
@@ -248,6 +248,17 @@
 millisecond value.
 </p>
 <p>
+In combination with Apache httpd, you can also set a more flexible 
reply_timeout
+using an httpd environment variable. If you set the variable JK_REPLY_TIMEOUT
+to some integer value, this value will be used instead of the value in
+the worker configuration. This way you can set reply timeouts more flexible
+with mod_setenvif and mod_rewrite depending on URI, query string etc.
+If the environment variable JK_REPLY_TIMEOUT is not set, or is set to a
+negative value, the default reply timeout of the worker will be used. If
+JK_REPLY_TIMEOUT contains the value "0", then the reply timeout will be 
disabled
+for the request.
+</p>
+<p>
 In combination with a load balancing worker, JK will disable a member
 worker of the load balancer if a reply timeout fires. The worker will then
 no longer be used until it gets recovered during the next automatic

Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?rev=611696&r1=611695&r2=611696&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Sun Jan 13 
18:28:27 2008
@@ -44,6 +44,10 @@
   <subsection name="Native">
     <changelog>
       <update>
+        Apache: Allow dynamic setting of reply timeout using the environment
+        variable JK_REPLY_TIMEOUT. (rjung)
+      </update>
+      <update>
         Status: Add manageability for ajp parameters of ajp
         workers and ajp lb members. (rjung)
       </update>

Modified: tomcat/connectors/trunk/jk/xdocs/reference/workers.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/reference/workers.xml?rev=611696&r1=611695&r2=611696&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/reference/workers.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/reference/workers.xml Sun Jan 13 18:28:27 
2008
@@ -658,8 +658,12 @@
 If you set a reply_timeout, adjust it carefully if you have long running 
servlets.
 </p>
 <p>
+The reply_timeout can be overwritten using the Apache httpd environment 
variable
+JK_REPLY_TIMEOUT.
+</p>
+<p>
 This features has been added in <b>jk 1.2.6</b> to avoid problem with hung 
Tomcat's and works on all
-servlet engines supporting ajp13.
+servlet engines supporting ajp13. The variable JK_REPLY_TIMEOUT has been added 
in version 1.2.27.
 </p>
 </directive>
 



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

Reply via email to