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]