Author: kwall
Date: Fri Feb 19 11:52:57 2016
New Revision: 1731230

URL: http://svn.apache.org/viewvc?rev=1731230&view=rev
Log:
QPID-7079: Add connection state logging on idle timeout to 0-10 onnections

Modified:
    qpid/java/branches/6.0.x/   (props changed)
    
qpid/java/branches/6.0.x/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10.java
    
qpid/java/branches/6.0.x/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
    
qpid/java/branches/6.0.x/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8.java

Propchange: qpid/java/branches/6.0.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 19 11:52:57 2016
@@ -9,5 +9,5 @@
 /qpid/branches/java-broker-vhost-refactor/java:1493674-1494547
 /qpid/branches/java-network-refactor/qpid/java:805429-821809
 /qpid/branches/qpid-2935/qpid/java:1061302-1072333
-/qpid/java/trunk:1715445-1715447,1715586,1715940,1716086-1716087,1716127-1716128,1716141,1716153,1716155,1716194,1716204,1716209,1716227,1716277,1716357,1716368,1716370,1716374,1716432,1716444-1716445,1716455,1716461,1716474,1716489,1716497,1716515,1716555,1716602,1716606-1716610,1716619,1716636,1717269,1717299,1717401,1717446,1717449,1717626,1717691,1717735,1717780,1718744,1718889,1718893,1718918,1718922,1719026,1719028,1719033,1719037,1719047,1719051,1720340,1720664,1721151,1721198,1722019-1722020,1722246,1722339,1722416,1722674,1722678,1722683,1722711,1723064,1723194,1723563,1724216,1724251,1724257,1724292,1724375,1724397,1724432,1724582,1724603,1724780,1724843-1724844,1725295,1725569,1725760,1726176,1726244-1726246,1726249,1726358,1726436,1726449,1726456,1726646,1726653,1726755,1726778,1727532,1727555,1727608,1727951,1727954,1728089,1728167,1728302,1728497,1728501,1728524,1728639,1728772,1729215,1729297,1729347,1729356,1729406,1729408,1729412,1729515,1729638,1729656-1729657,1729
 
783,1729828,1729832,1729841,1729851,1729886,1729904,1729973,1730019,1730025,1730052,1730072,1730088,1730494,1730499,1730547,1730559,1730567,1730578,1730585,1730651,1730697,1730712-1730713,1730805,1731110,1731210
+/qpid/java/trunk:1715445-1715447,1715586,1715940,1716086-1716087,1716127-1716128,1716141,1716153,1716155,1716194,1716204,1716209,1716227,1716277,1716357,1716368,1716370,1716374,1716432,1716444-1716445,1716455,1716461,1716474,1716489,1716497,1716515,1716555,1716602,1716606-1716610,1716619,1716636,1717269,1717299,1717401,1717446,1717449,1717626,1717691,1717735,1717780,1718744,1718889,1718893,1718918,1718922,1719026,1719028,1719033,1719037,1719047,1719051,1720340,1720664,1721151,1721198,1722019-1722020,1722246,1722339,1722416,1722674,1722678,1722683,1722711,1723064,1723194,1723563,1724216,1724251,1724257,1724292,1724375,1724397,1724432,1724582,1724603,1724780,1724843-1724844,1725295,1725569,1725760,1726176,1726244-1726246,1726249,1726358,1726436,1726449,1726456,1726646,1726653,1726755,1726778,1727532,1727555,1727608,1727951,1727954,1728089,1728167,1728302,1728497,1728501,1728524,1728639,1728772,1729215,1729297,1729347,1729356,1729406,1729408,1729412,1729515,1729638,1729656-1729657,1729
 
783,1729828,1729832,1729841,1729851,1729886,1729904,1729973,1730019,1730025,1730052,1730072,1730088,1730494,1730499,1730547,1730559,1730567,1730578,1730585,1730651,1730697,1730712-1730713,1730805,1731029,1731110,1731210,1731225
 /qpid/trunk/qpid:796646-796653

Modified: 
qpid/java/branches/6.0.x/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10.java
URL: 
http://svn.apache.org/viewvc/qpid/java/branches/6.0.x/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10.java?rev=1731230&r1=1731229&r2=1731230&view=diff
==============================================================================
--- 
qpid/java/branches/6.0.x/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10.java
 (original)
+++ 
qpid/java/branches/6.0.x/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10.java
 Fri Feb 19 11:52:57 2016
@@ -195,7 +195,7 @@ public class AMQPConnection_0_10 extends
             @Override
             public Object run()
             {
-                
_connection.getEventLogger().message(ConnectionMessages.IDLE_CLOSE("", false));
+                
_connection.getEventLogger().message(ConnectionMessages.IDLE_CLOSE("Current 
connection state: " + _connection.getConnectionDelegate().getState(), true));
                 _network.close();
                 return null;
             }

Modified: 
qpid/java/branches/6.0.x/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
URL: 
http://svn.apache.org/viewvc/qpid/java/branches/6.0.x/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java?rev=1731230&r1=1731229&r2=1731230&view=diff
==============================================================================
--- 
qpid/java/branches/6.0.x/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
 (original)
+++ 
qpid/java/branches/6.0.x/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
 Fri Feb 19 11:52:57 2016
@@ -41,6 +41,7 @@ import org.slf4j.LoggerFactory;
 import org.apache.qpid.common.ServerPropertyNames;
 import org.apache.qpid.configuration.CommonProperties;
 import org.apache.qpid.properties.ConnectionStartProperties;
+import org.apache.qpid.protocol.AMQConstant;
 import org.apache.qpid.server.configuration.BrokerProperties;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.State;
@@ -66,6 +67,19 @@ public class ServerConnectionDelegate ex
 
     private boolean _compressionSupported;
 
+    enum ConnectionState
+    {
+        INIT,
+        AWAIT_START_OK,
+        AWAIT_SECURE_OK,
+        AWAIT_TUNE_OK,
+        AWAIT_OPEN,
+        OPEN
+    }
+
+    private volatile ConnectionState _state = ConnectionState.INIT;
+
+
     public ServerConnectionDelegate(Broker<?> broker, String localFQDN, 
SubjectCreator subjectCreator)
     {
         this(createConnectionProperties(broker), 
Collections.singletonList((Object)"en_US"), broker, localFQDN, subjectCreator);
@@ -86,6 +100,30 @@ public class ServerConnectionDelegate ex
         _maximumFrameSize = Math.min(0xffff, broker.getNetworkBufferSize());
     }
 
+
+    public final ConnectionState getState()
+    {
+        return _state;
+    }
+
+
+    private void assertState(final ServerConnection conn, final 
ConnectionState requiredState)
+    {
+        if(_state != requiredState)
+        {
+            conn.sendConnectionClose(ConnectionCloseCode.FRAMING_ERROR, 
"Command Invalid expected "+requiredState+" but was "+_state);
+            conn.closeAndIgnoreFutureInput();
+        }
+    }
+
+    @Override
+    public void init(final Connection conn, final ProtocolHeader hdr)
+    {
+        assertState((ServerConnection)conn, ConnectionState.INIT);
+        super.init(conn, hdr);
+        _state = ConnectionState.AWAIT_START_OK;
+    }
+
     private static List<String> getFeatures(Broker<?> broker)
     {
         String brokerDisabledFeatures = 
System.getProperty(BrokerProperties.PROPERTY_DISABLED_FEATURES);
@@ -134,6 +172,13 @@ public class ServerConnectionDelegate ex
 
     }
 
+    @Override
+    public void connectionSecureOk(final Connection conn, final 
ConnectionSecureOk ok)
+    {
+        assertState((ServerConnection)conn, ConnectionState.AWAIT_SECURE_OK);
+        super.connectionSecureOk(conn, ok);
+    }
+
     protected void secure(final SaslServer ss, final Connection conn, final 
byte[] response)
     {
         final ServerConnection sconn = (ServerConnection) conn;
@@ -143,10 +188,12 @@ public class ServerConnectionDelegate ex
         {
             tuneAuthorizedConnection(sconn);
             sconn.setAuthorizedSubject(authResult.getSubject());
+            _state = ConnectionState.AWAIT_TUNE_OK;
         }
         else if (AuthenticationStatus.CONTINUE.equals(authResult.getStatus()))
         {
             connectionAuthContinue(sconn, authResult.getChallenge());
+            _state = ConnectionState.AWAIT_SECURE_OK;
         }
         else
         {
@@ -166,7 +213,7 @@ public class ServerConnectionDelegate ex
     public void connectionOpen(Connection conn, ConnectionOpen open)
     {
         final ServerConnection sconn = (ServerConnection) conn;
-
+        assertState(sconn, ConnectionState.AWAIT_OPEN);
         VirtualHostImpl vhost;
         String vhostName;
         if(open.hasVirtualHost())
@@ -219,6 +266,7 @@ public class ServerConnectionDelegate ex
             }
 
             sconn.setState(Connection.State.OPEN);
+            _state = ConnectionState.OPEN;
             sconn.invoke(new ConnectionOpenOk(Collections.emptyList()));
         }
         else
@@ -234,6 +282,7 @@ public class ServerConnectionDelegate ex
     public void connectionTuneOk(final Connection conn, final ConnectionTuneOk 
ok)
     {
         ServerConnection sconn = (ServerConnection) conn;
+        assertState(sconn, ConnectionState.AWAIT_TUNE_OK);
         int okChannelMax = ok.getChannelMax();
         int okMaxFrameSize = ok.getMaxFrameSize();
 
@@ -295,6 +344,7 @@ public class ServerConnectionDelegate ex
 
         setConnectionTuneOkChannelMax(sconn, okChannelMax);
         conn.setMaxFrameSize(okMaxFrameSize);
+        _state = ConnectionState.AWAIT_OPEN;
     }
 
     @Override
@@ -339,6 +389,8 @@ public class ServerConnectionDelegate ex
     @Override
     public void sessionAttach(final Connection conn, final SessionAttach atc)
     {
+        assertState((ServerConnection)conn, ConnectionState.OPEN);
+
         final Session ssn;
 
         if(isSessionNameUnique(atc.getName(), conn))
@@ -380,6 +432,7 @@ public class ServerConnectionDelegate ex
     @Override
     public void connectionStartOk(Connection conn, ConnectionStartOk ok)
     {
+        assertState((ServerConnection)conn, ConnectionState.AWAIT_START_OK);
         _clientProperties = ok.getClientProperties();
         if(_clientProperties != null)
         {

Modified: 
qpid/java/branches/6.0.x/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8.java
URL: 
http://svn.apache.org/viewvc/qpid/java/branches/6.0.x/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8.java?rev=1731230&r1=1731229&r2=1731230&view=diff
==============================================================================
--- 
qpid/java/branches/6.0.x/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8.java
 (original)
+++ 
qpid/java/branches/6.0.x/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8.java
 Fri Feb 19 11:52:57 2016
@@ -121,7 +121,7 @@ public class AMQPConnection_0_8
     private final Object _channelAddRemoveLock = new Object();
     private final Map<Integer, AMQChannel> _channelMap = new 
ConcurrentHashMap<>();
 
-    private ConnectionState _state = ConnectionState.INIT;
+    private volatile ConnectionState _state = ConnectionState.INIT;
 
     /**
      * The channels that the latest call to {@link 
ProtocolEngine#received(QpidByteBuffer)} applied to.



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

Reply via email to