mturk 2005/05/18 11:04:53
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_global.h jk_service.h
jk/native/iis jk_isapi_plugin.c
jk/native/netscape jk_nsapi_plugin.c
jk/xdocs changelog.xml
jk/xdocs/config apache.xml
Log:
Adde FlushPackets option.
Revision Changes Path
1.83 +19 -7 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.82
retrieving revision 1.83
diff -u -r1.82 -r1.83
--- mod_jk.c 15 May 2005 11:10:11 -0000 1.82
+++ mod_jk.c 18 May 2005 18:04:52 -0000 1.83
@@ -300,6 +300,15 @@
return JK_FALSE;
}
+static void JK_METHOD ws_flush(jk_ws_service_t *s)
+{
+ if (s && s->ws_private) {
+ apache_private_data_t *p = s->ws_private;
+ BUFF *bf = p->r->connection->client;
+ ap_bflush(bf);
+ }
+}
+
/*
* Write a chunk of response data back to the browser. If the headers
* haven't yet been sent over, send over default header values (Status =
@@ -317,7 +326,6 @@
apache_private_data_t *p = s->ws_private;
if (len) {
- BUFF *bf = p->r->connection->client;
char *buf = (char *)b;
int w = (int)len;
int r = 0;
@@ -329,6 +337,7 @@
}
if (p->r->header_only) {
+ BUFF *bf = p->r->connection->client;
ap_bflush(bf);
return JK_TRUE;
}
@@ -351,11 +360,6 @@
}
}
-
- /*
- * To allow server push.
- */
- ap_bflush(bf);
}
return JK_TRUE;
@@ -436,6 +440,7 @@
s->start_response = ws_start_response;
s->read = ws_read;
s->write = ws_write;
+ s->flush = ws_flush;
/* Clear RECO status */
s->reco_status = RECO_NONE;
@@ -454,6 +459,10 @@
else
s->remote_addr = NULL_FOR_EMPTY(r->connection->remote_ip);
+ if (conf->options & JK_OPT_FLUSHPACKETS)
+ s->flush_packets = 1;
+ else
+ s->flush_packets = 0;
/* get server name */
/* s->server_name = (char *)(r->hostname ? r->hostname :
r->server->server_hostname); */
/* XXX : � la jk2 */
@@ -1503,6 +1512,9 @@
else if (!strcasecmp(w, "ForwardLocalAddress")) {
opt = JK_OPT_FWDLOCAL;
}
+ else if (!strcasecmp(w, "FlushPackets")) {
+ opt = JK_OPT_FLUSHPACKETS;
+ }
else
return ap_pstrcat(cmd->pool, "JkOptions: Illegal option '", w,
"'", NULL);
1.146 +14 -14 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.145
retrieving revision 1.146
diff -u -r1.145 -r1.146
--- mod_jk.c 15 May 2005 11:10:11 -0000 1.145
+++ mod_jk.c 18 May 2005 18:04:52 -0000 1.146
@@ -317,6 +317,14 @@
return JK_FALSE;
}
+static void JK_METHOD ws_flush(jk_ws_service_t *s)
+{
+ if (s && s->ws_private) {
+ apache_private_data_t *p = s->ws_private;
+ ap_rflush(p->r);
+ }
+}
+
/*
* Write a chunk of response data back to the browser. If the headers
* haven't yet been sent over, send over default header values (Status =
@@ -387,18 +395,6 @@
}
}
-
- /*
- * To allow server push. After writing full buffers
- */
-#ifndef AS400
- if (ap_rflush(p->r) != APR_SUCCESS) {
- ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_CRIT, 0,
- NULL, "mod_jk: Error flushing");
- return JK_FALSE;
- }
-#endif
-
}
return JK_TRUE;
@@ -462,6 +458,7 @@
s->start_response = ws_start_response;
s->read = ws_read;
s->write = ws_write;
+ s->flush = ws_flush;
/* Clear RECO status */
s->reco_status = RECO_NONE;
@@ -478,7 +475,10 @@
s->remote_addr = NULL_FOR_EMPTY(r->connection->local_ip);
else
s->remote_addr = NULL_FOR_EMPTY(r->connection->remote_ip);
-
+ if (conf->options & JK_OPT_FLUSHPACKETS)
+ s->flush_packets = 1;
+ else
+ s->flush_packets = 0;
/* get server name */
s->server_name = (char *)ap_get_server_name(r);
1.117 +15 -12
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.116
retrieving revision 1.117
diff -u -r1.116 -r1.117
--- jk_ajp_common.c 15 May 2005 17:06:05 -0000 1.116
+++ jk_ajp_common.c 18 May 2005 18:04:53 -0000 1.117
@@ -1377,6 +1377,8 @@
JK_TRACE_EXIT(l);
return JK_CLIENT_ERROR;
}
+ if (r->flush && r->flush_packets)
+ r->flush(r);
}
break;
@@ -1410,18 +1412,19 @@
break;
case JK_AJP13_END_RESPONSE:
- {
- ae->reuse = (int)jk_b_get_byte(msg);
+ ae->reuse = (int)jk_b_get_byte(msg);
+ if (!ae->reuse) {
+ /*
+ * Strange protocol error.
+ */
+ jk_log(l, JK_LOG_INFO, " Protocol error: Reuse is set to false");
+ }
+ /* Flush after the last write */
+ if (r->flush && !r->flush_packets)
+ r->flush(r);
- if (!ae->reuse) {
- /*
- * Strange protocol error.
- */
- jk_log(l, JK_LOG_INFO, " Protocol error: Reuse is set to
false");
- }
- /* Reuse in all cases */
- ae->reuse = JK_TRUE;
- }
+ /* Reuse in all cases */
+ ae->reuse = JK_TRUE;
JK_TRACE_EXIT(l);
return JK_AJP13_END_RESPONSE;
break;
1.49 +2 -1 jakarta-tomcat-connectors/jk/native/common/jk_global.h
Index: jk_global.h
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_global.h,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- jk_global.h 7 May 2005 08:15:47 -0000 1.48
+++ jk_global.h 18 May 2005 18:04:53 -0000 1.49
@@ -209,6 +209,7 @@
#define JK_OPT_FWDDIRS 0x0008
/* Forward local instead remote address */
#define JK_OPT_FWDLOCAL 0x0010
+#define JK_OPT_FLUSHPACKETS 0x0020
/* Check for EBCDIC systems */
1.32 +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.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- jk_service.h 24 Apr 2005 09:54:47 -0000 1.31
+++ jk_service.h 18 May 2005 18:04:53 -0000 1.32
@@ -216,6 +216,11 @@
*/
int retries;
+ /*
+ * If set call flush after each write
+ */
+ int flush_packets;
+
/* Uri worker map. Added for virtual host support
*/
jk_uri_worker_map_t *uw_map;
@@ -244,6 +249,11 @@
*/
int (JK_METHOD * write) (jk_ws_service_t *s,
const void *buffer, unsigned len);
+
+ /*
+ * Flush a chunk of response data back to the browser.
+ */
+ void (JK_METHOD * flush) (jk_ws_service_t *s);
};
/*
1.49 +2 -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.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- jk_isapi_plugin.c 15 May 2005 11:10:11 -0000 1.48
+++ jk_isapi_plugin.c 18 May 2005 18:04:53 -0000 1.49
@@ -1356,6 +1356,7 @@
s->start_response = start_response;
s->read = read;
s->write = write;
+ s->flush = NULL;
/* Clear RECO status */
s->reco_status = RECO_NONE;
1.25 +2 -1
jakarta-tomcat-connectors/jk/native/netscape/jk_nsapi_plugin.c
Index: jk_nsapi_plugin.c
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/native/netscape/jk_nsapi_plugin.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- jk_nsapi_plugin.c 15 May 2005 11:10:11 -0000 1.24
+++ jk_nsapi_plugin.c 18 May 2005 18:04:53 -0000 1.25
@@ -349,6 +349,7 @@
s->start_response = start_response;
s->read = ws_read;
s->write = ws_write;
+ s->flush = NULL;
/* Clear RECO status */
s->reco_status = RECO_NONE;
1.33 +4 -0 jakarta-tomcat-connectors/jk/xdocs/changelog.xml
Index: changelog.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/xdocs/changelog.xml,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- changelog.xml 16 May 2005 06:40:31 -0000 1.32
+++ changelog.xml 18 May 2005 18:04:53 -0000 1.33
@@ -26,6 +26,10 @@
<subsection name="Native">
<changelog>
<update>
+ Added JkOptions +FlushPackets used to optimize memory
+ usage when sending large data. (mturk)
+ </update>
+ <update>
Added lock directive for load balancer that allows more acurate
load balancing in case of burst load. (mturk)
</update>
1.13 +12 -0 jakarta-tomcat-connectors/jk/xdocs/config/apache.xml
Index: apache.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/xdocs/config/apache.xml,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- apache.xml 7 May 2005 08:15:47 -0000 1.12
+++ apache.xml 18 May 2005 18:04:53 -0000 1.13
@@ -324,6 +324,18 @@
</p>
<p>
+JkOptions <b>FlushPackets</b>, you told mod_jk to make a flush after each AJP
+packet received from Tomcat.
+
+<source>
+ JkOptions +FlushPackets
+</source>
+
+<br/>
+<br/>
+</p>
+
+<p>
The directive <b>JkEnvVar</b> allow you to forward an environment vars from
Apache server to Tomcat engine.
<source>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]