Author: asankha
Date: Tue Jan 6 20:33:44 2009
New Revision: 732220
URL: http://svn.apache.org/viewvc?rev=732220&view=rev
Log:
better handling of internal server error responses, and improved logging with
the IP address of remote connection, on transport errors
Modified:
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
Modified:
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java?rev=732220&r1=732219&r2=732220&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
(original)
+++
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
Tue Jan 6 20:33:44 2009
@@ -612,29 +612,9 @@
return;
}
case HttpStatus.SC_INTERNAL_SERVER_ERROR : {
- Header contentType = response.getFirstHeader(CONTENT_TYPE);
- if (contentType != null) {
-
- if
((contentType.getValue().indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) >= 0)
- || contentType.getValue().indexOf(
- SOAP12Constants.SOAP_12_CONTENT_TYPE) >=0) {
-
- if (log.isDebugEnabled()) {
- log.debug("Received an internal server error with
a SOAP payload");
- }
-
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Received an internal server error with
a POX/REST payload");
- }
- }
-
- processResponse(conn, context, response);
- return;
- }
-
log.error("Received an internal server error : " +
- response.getStatusLine().getReasonPhrase());
+ response.getStatusLine().getReasonPhrase());
+ processResponse(conn, context, response);
return;
}
case HttpStatus.SC_CONTINUE : {
Modified:
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java?rev=732220&r1=732219&r2=732220&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
(original)
+++
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
Tue Jan 6 20:33:44 2009
@@ -322,6 +322,9 @@
} else {
try {
handler.submitRequest(conn, axis2Req);
+ if (log.isDebugEnabled()) {
+ log.debug("An existing connection reused to : " +
url.getHost() + ":" + port);
+ }
} catch (ConnectionClosedException e) {
ioReactor.connect(new InetSocketAddress(url.getHost(),
port),
null, axis2Req, sessionRequestCallback);
@@ -329,9 +332,6 @@
log.debug("A new connection established to : " +
url.getHost() + ":" + port);
}
}
- if (log.isDebugEnabled()) {
- log.debug("An existing connection reused to : " +
url.getHost() + ":" + port);
- }
}
try {
@@ -429,27 +429,30 @@
if (lstMetrics != null) {
lstMetrics.incrementFaultsSending();
}
- handleException("Unexpected HTTP protocol error : " +
e.getMessage(), e);
+ handleException("Unexpected HTTP protocol error sending response
to : " +
+ worker.getRemoteAddress(), e);
} catch (ConnectionClosedException e) {
if (lstMetrics != null) {
lstMetrics.incrementFaultsSending();
}
- log.warn("Connection closed by client (Connection closed)");
+ log.warn("Connection closed by client : " +
worker.getRemoteAddress());
} catch (IllegalStateException e) {
if (lstMetrics != null) {
lstMetrics.incrementFaultsSending();
}
- log.warn("Connection closed by client (Buffer closed)");
+ log.warn("Connection closed by client : " +
worker.getRemoteAddress());
} catch (IOException e) {
if (lstMetrics != null) {
lstMetrics.incrementFaultsSending();
}
- handleException("IO Error sending response message", e);
+ handleException("IO Error sending response message to : " +
+ worker.getRemoteAddress(), e);
} catch (Exception e) {
if (lstMetrics != null) {
lstMetrics.incrementFaultsSending();
}
- handleException("General Error sending response message", e);
+ handleException("General Error sending response message to : " +
+ worker.getRemoteAddress(), e);
}
InputStream is = worker.getIs();
Modified:
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java?rev=732220&r1=732219&r2=732220&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
(original)
+++
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
Tue Jan 6 20:33:44 2009
@@ -84,6 +84,11 @@
private static final String CONTENT_TYPE = "Content-Type";
private static final String TEXT_HTML = "text/html";
private static final String TEXT_XML = "text/xml";
+ /**
+ * Save requesting user IP address for logging - even during response
processing when
+ * the connection may be closed
+ */
+ private String remoteAddress = null;
/**
* Create a new server side worker to process an incoming message and
optionally begin creating
@@ -166,6 +171,7 @@
if (remoteAddr != null) {
msgContext.setProperty(MessageContext.REMOTE_ADDR,
remoteAddr.getHostAddress());
msgContext.setProperty(NhttpConstants.REMOTE_HOST,
NhttpUtil.getHostName(remoteAddr));
+ remoteAddress = remoteAddr.getHostAddress();
}
}
@@ -594,6 +600,10 @@
return conn;
}
+ public String getRemoteAddress() {
+ return remoteAddress;
+ }
+
/**
* Whatever this method returns as the IP is ignored by the actual http/s
listener when
* its getServiceEPR is invoked. This was originally copied from axis2