Author: orudyy
Date: Fri Dec  5 09:33:27 2014
New Revision: 1643208

URL: http://svn.apache.org/viewvc?rev=1643208&view=rev
Log:
QPID-6257: Introduce operational log for connection being dropped by the 
clients or due to network issue and change the log level for SenderExceptions 
into INFO/DEBUG

Modified:
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties
    
qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
    
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java
    
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/InternalTestProtocolSession.java
    
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/MaxChannelsTest.java
    
qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java?rev=1643208&r1=1643207&r2=1643208&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java
 Fri Dec  5 09:33:27 2014
@@ -45,6 +45,7 @@ public class ConnectionMessages
 
     public static final String CONNECTION_LOG_HIERARCHY = 
DEFAULT_LOG_HIERARCHY_PREFIX + "connection";
     public static final String OPEN_LOG_HIERARCHY = 
DEFAULT_LOG_HIERARCHY_PREFIX + "connection.open";
+    public static final String DROPPED_CONNECTION_LOG_HIERARCHY = 
DEFAULT_LOG_HIERARCHY_PREFIX + "connection.dropped_connection";
     public static final String IDLE_CLOSE_LOG_HIERARCHY = 
DEFAULT_LOG_HIERARCHY_PREFIX + "connection.idle_close";
     public static final String CLOSE_LOG_HIERARCHY = 
DEFAULT_LOG_HIERARCHY_PREFIX + "connection.close";
 
@@ -52,6 +53,7 @@ public class ConnectionMessages
     {
         Logger.getLogger(CONNECTION_LOG_HIERARCHY);
         Logger.getLogger(OPEN_LOG_HIERARCHY);
+        Logger.getLogger(DROPPED_CONNECTION_LOG_HIERARCHY);
         Logger.getLogger(IDLE_CLOSE_LOG_HIERARCHY);
         Logger.getLogger(CLOSE_LOG_HIERARCHY);
 
@@ -142,6 +144,33 @@ public class ConnectionMessages
             }
         };
     }
+
+    /**
+     * Log a Connection message of the Format:
+     * <pre>CON-1004 : Connection dropped</pre>
+     * Optional values are contained in [square brackets] and are numbered
+     * sequentially in the method call.
+     *
+     */
+    public static LogMessage DROPPED_CONNECTION()
+    {
+        String rawMessage = _messages.getString("DROPPED_CONNECTION");
+
+        final String message = rawMessage;
+
+        return new LogMessage()
+        {
+            public String toString()
+            {
+                return message;
+            }
+
+            public String getLogHierarchy()
+            {
+                return DROPPED_CONNECTION_LOG_HIERARCHY;
+            }
+        };
+    }
 
     /**
      * Log a Connection message of the Format:

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties?rev=1643208&r1=1643207&r2=1643208&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties
 Fri Dec  5 09:33:27 2014
@@ -24,3 +24,4 @@
 OPEN = CON-1001 : Open[ : Client ID : {0}][ : Protocol Version : {1}][ : 
Client Version : {2}][ : Client Product : {3}]
 CLOSE = CON-1002 : Close
 IDLE_CLOSE = CON-1003 : Closed due to inactivity
+DROPPED_CONNECTION = CON-1004 : Connection dropped
\ No newline at end of file

Modified: 
qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java?rev=1643208&r1=1643207&r2=1643208&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
 Fri Dec  5 09:33:27 2014
@@ -174,7 +174,7 @@ public class ServerConnection extends Co
     {
         if(_logClosed.compareAndSet(false, true))
         {
-            getEventLogger().message(this, ConnectionMessages.CLOSE());
+            getEventLogger().message(this, isConnectionLost() ? 
ConnectionMessages.DROPPED_CONNECTION() : ConnectionMessages.CLOSE());
         }
     }
 

Modified: 
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java?rev=1643208&r1=1643207&r2=1643208&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java
 Fri Dec  5 09:33:27 2014
@@ -86,6 +86,7 @@ import org.apache.qpid.server.util.Conne
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
 import org.apache.qpid.server.virtualhost.VirtualHostImpl;
 import org.apache.qpid.transport.Sender;
+import org.apache.qpid.transport.SenderClosedException;
 import org.apache.qpid.transport.SenderException;
 import org.apache.qpid.transport.TransportException;
 import org.apache.qpid.transport.network.NetworkConnection;
@@ -331,6 +332,16 @@ public class AMQProtocolEngine implement
                     _logger.error("Unexpected protocol version", e);
                     closeProtocolSession();
                 }
+                catch (SenderClosedException e)
+                {
+                    _logger.debug("Sender was closed abruptly, closing 
network.", e);
+                    closeProtocolSession();
+                }
+                catch (SenderException e)
+                {
+                    _logger.info("Unexpected exception on send, closing 
network.", e);
+                    closeProtocolSession();
+                }
                 catch (TransportException e)
                 {
                     _logger.error("Unexpected transport exception", e);
@@ -766,7 +777,7 @@ public class AMQProtocolEngine implement
         }
     }
 
-    public void closeSession()
+    public void closeSession(final boolean connectionDropped)
     {
 
         if(runningAsSubject())
@@ -782,34 +793,9 @@ public class AMQProtocolEngine implement
                 finally
                 {
                     _receivedLock.unlock();
+                    finishClose(connectionDropped);
                 }
 
-                if (!_closed)
-                {
-                    if (_virtualHost != null)
-                    {
-                        
_virtualHost.getConnectionRegistry().deregisterConnection(this);
-                    }
-
-                    try
-                    {
-                        closeAllChannels();
-                    }
-                    finally
-                    {
-                        for (Action<? super AMQProtocolEngine> task : 
_taskList)
-                        {
-                            task.performAction(this);
-                        }
-
-                        synchronized (this)
-                        {
-                            _closed = true;
-                            notifyAll();
-                        }
-                        getEventLogger().message(_logSubject, 
ConnectionMessages.CLOSE());
-                    }
-                }
             }
             else
             {
@@ -823,7 +809,7 @@ public class AMQProtocolEngine implement
                 @Override
                 public Object run()
                 {
-                    closeSession();
+                    closeSession(connectionDropped);
                     return null;
                 }
             });
@@ -831,6 +817,41 @@ public class AMQProtocolEngine implement
         }
     }
 
+    private void finishClose(boolean connectionDropped)
+    {
+        if (!_closed)
+        {
+
+            try
+            {
+                if (_virtualHost != null)
+                {
+                    
_virtualHost.getConnectionRegistry().deregisterConnection(this);
+                }
+                closeAllChannels();
+            }
+            finally
+            {
+                try
+                {
+                    for (Action<? super AMQProtocolEngine> task : _taskList)
+                    {
+                        task.performAction(this);
+                    }
+                }
+                finally
+                {
+                    synchronized (this)
+                    {
+                        _closed = true;
+                        notifyAll();
+                    }
+                    getEventLogger().message(_logSubject, connectionDropped ? 
ConnectionMessages.DROPPED_CONNECTION() : ConnectionMessages.CLOSE());
+                }
+            }
+        }
+    }
+
     private void awaitClosed()
     {
         synchronized(this)
@@ -898,7 +919,7 @@ public class AMQProtocolEngine implement
             try
             {
                 markChannelAwaitingCloseOk(channelId);
-                closeSession();
+                closeSession(false);
             }
             finally
             {
@@ -1126,7 +1147,7 @@ public class AMQProtocolEngine implement
         {
             try
             {
-                closeSession();
+                closeSession(true);
             }
             finally
             {
@@ -1561,7 +1582,7 @@ public class AMQProtocolEngine implement
         }
         try
         {
-            closeSession();
+            closeSession(false);
         }
         catch (Exception e)
         {
@@ -1588,7 +1609,7 @@ public class AMQProtocolEngine implement
 
         try
         {
-            closeSession();
+            closeSession(false);
         }
         catch (Exception e)
         {

Modified: 
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/InternalTestProtocolSession.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/InternalTestProtocolSession.java?rev=1643208&r1=1643207&r2=1643208&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/InternalTestProtocolSession.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/InternalTestProtocolSession.java
 Fri Dec  5 09:33:27 2014
@@ -231,7 +231,7 @@ public class InternalTestProtocolSession
         //Simulate the Client responding with a CloseOK
         // should really update the StateManger but we don't have access here
         // changeState(AMQState.CONNECTION_CLOSED);
-        ((AMQChannel)session).getConnection().closeSession();
+        ((AMQChannel)session).getConnection().closeSession(false);
 
     }
 

Modified: 
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/MaxChannelsTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/MaxChannelsTest.java?rev=1643208&r1=1643207&r2=1643208&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/MaxChannelsTest.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/MaxChannelsTest.java
 Fri Dec  5 09:33:27 2014
@@ -62,7 +62,7 @@ public class MaxChannelsTest extends Qpi
         try
         {
             _session.getVirtualHost().close();
-            _session.closeSession();
+            _session.closeSession(false);
         }
         finally
         {

Modified: 
qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java?rev=1643208&r1=1643207&r2=1643208&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
 (original)
+++ 
qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
 Fri Dec  5 09:33:27 2014
@@ -730,6 +730,11 @@ public class Connection extends Connecti
         return connectionLost.get();
     }
 
+    protected boolean isConnectionLost()
+    {
+        return connectionLost.get();
+    }
+
     protected Collection<Session> getChannels()
     {
         return new ArrayList<>(channels.values());



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to