You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mt...@apache.org on 2006/07/08 08:44:25 UTC
svn commit: r420058 -
/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
Author: mturk
Date: Fri Jul 7 23:44:25 2006
New Revision: 420058
URL: http://svn.apache.org/viewvc?rev=420058&view=rev
Log:
If all endpoints are dead or closed by the Tomcat, then try to reconnect if timeouts are set. This fixes the cases when connect_timeout is set for load balancer.
Modified:
tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
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=420058&r1=420057&r2=420058&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Fri Jul 7 23:44:25 2006
@@ -1218,22 +1218,29 @@
* If we failed to reuse a connection, try to reconnect.
*/
if (ae->sd < 0) {
-
- if (err) {
+ /* If we the previous connection was in error
+ * try to reconnect only if timeouts are set
+ */
+ if (err && ae->worker->connect_timeout == 0 &&
+ ae->worker->socket_timeout == 0) {
/* XXX: If err is set, the tomcat is either dead or disconnected */
jk_log(l, JK_LOG_INFO,
"All endpoints are disconnected or dead");
JK_TRACE_EXIT(l);
return JK_FALSE;
}
- /* no need to handle cping/cpong here since it should be at connection time */
-
+ /* Connect to the backend.
+ * This can be either uninitalized connection or a reconnect.
+ */
if (ajp_connect_to_endpoint(ae, l) == JK_TRUE) {
/*
* After we are connected, each error that we are going to
* have is probably unrecoverable
*/
if (ajp_connection_tcp_send_message(ae, op->request, l) != JK_TRUE) {
+ /* Close the socket if unable to send request */
+ jk_close_socket(ae->sd);
+ ae->sd = -1;
jk_log(l, JK_LOG_INFO,
"Error sending request on a fresh connection");
JK_TRACE_EXIT(l);
@@ -1245,7 +1252,7 @@
jk_close_socket(ae->sd);
ae->sd = -1;
jk_log(l, JK_LOG_INFO,
- "Error connecting to the Tomcat process.");
+ "Error connecting to the backend server.");
JK_TRACE_EXIT(l);
return JK_FALSE;
}
@@ -1273,6 +1280,9 @@
postlen = op->post->len;
if (postlen > AJP_HEADER_LEN) {
if (ajp_connection_tcp_send_message(ae, op->post, l) != JK_TRUE) {
+ /* Close the socket if unable to send request */
+ jk_close_socket(ae->sd);
+ ae->sd = -1;
jk_log(l, JK_LOG_ERROR, "Error resending request body (%d)",
postlen);
JK_TRACE_EXIT(l);
@@ -1290,6 +1300,9 @@
if (postlen > AJP_HEADER_LEN) {
if (ajp_connection_tcp_send_message(ae, s->reco_buf, l) != JK_TRUE) {
+ /* Close the socket if unable to send request */
+ jk_close_socket(ae->sd);
+ ae->sd = -1;
jk_log(l, JK_LOG_ERROR,
"Error resending request body (lb mode) (%d)",
postlen);
@@ -1337,6 +1350,9 @@
s->content_read = len;
if (ajp_connection_tcp_send_message(ae, op->post, l) != JK_TRUE) {
+ /* Close the socket if unable to send request */
+ jk_close_socket(ae->sd);
+ ae->sd = -1;
jk_log(l, JK_LOG_ERROR, "Error sending request body");
JK_TRACE_EXIT(l);
return JK_FALSE;
@@ -2246,6 +2262,3 @@
JK_TRACE_EXIT(l);
return JK_FALSE;
}
-
-
-
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org