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]