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


Reply via email to