You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2018/02/08 16:09:38 UTC

[1/2] qpid-broker-j git commit: QPID-8091: [Broker-J][AMQP 0-10] Close 0-10 connection on transaction timeout

Repository: qpid-broker-j
Updated Branches:
  refs/heads/master 31037b059 -> a9667120e


QPID-8091: [Broker-J][AMQP 0-10] Close 0-10 connection on transaction timeout


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/a9667120
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/a9667120
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/a9667120

Branch: refs/heads/master
Commit: a9667120ed7a64264a50c80a2938a6c73c3f93f2
Parents: 53cf020
Author: Alex Rudyy <or...@apache.org>
Authored: Thu Feb 8 16:07:48 2018 +0000
Committer: Alex Rudyy <or...@apache.org>
Committed: Thu Feb 8 16:09:09 2018 +0000

----------------------------------------------------------------------
 .../protocol/v0_10/AMQPConnection_0_10Impl.java | 11 +++++---
 .../server/protocol/v0_10/ServerConnection.java | 29 ++++++++++++++++++++
 .../server/protocol/v0_10/ServerSession.java    |  8 ++++--
 .../tests/protocol/v0_10/TransactionTest.java   | 26 ++++++------------
 4 files changed, 50 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a9667120/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10Impl.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10Impl.java b/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10Impl.java
index 3c9fbd1..055f935 100755
--- a/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10Impl.java
+++ b/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10Impl.java
@@ -72,8 +72,6 @@ public class AMQPConnection_0_10Impl extends AbstractAMQPConnection<AMQPConnecti
 
     private final Set<AMQPSession<?,?>> _sessionsWithWork =
             Collections.newSetFromMap(new ConcurrentHashMap<AMQPSession<?,?>, Boolean>());
-    private volatile String _closeCause;
-
 
     public AMQPConnection_0_10Impl(final Broker<?> broker,
                                    ServerNetworkConnection network,
@@ -302,7 +300,7 @@ public class AMQPConnection_0_10Impl extends AbstractAMQPConnection<AMQPConnecti
     @Override
     public void sendConnectionCloseAsync(final CloseReason reason, final String description)
     {
-        _closeCause = description;
+        _connection.setConnectionCloseCause(reason, description);
         stopConnection();
         // Best mapping for all reasons is "forced"
         _connection.sendConnectionCloseAsync(ConnectionCloseCode.CONNECTION_FORCED, description);
@@ -365,7 +363,12 @@ public class AMQPConnection_0_10Impl extends AbstractAMQPConnection<AMQPConnecti
     @Override
     protected String getCloseCause()
     {
-        return _closeCause;
+        String connectionCloseMessage = _connection.getConnectionCloseMessage();
+        if (connectionCloseMessage == null)
+        {
+            return null;
+        }
+        return _connection.getConnectionCloseCode() + " - " + connectionCloseMessage;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a9667120/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java b/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
index 8032b35..1166058 100644
--- a/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
+++ b/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
@@ -106,6 +106,8 @@ public class ServerConnection extends ConnectionInvoker
     private String locale;
     private SocketAddress _remoteAddress;
     private int _heartBeatDelay;
+    private volatile int _connectionCloseCode;
+    private volatile String _connectionCloseMessage;
 
     public ServerConnection(final long connectionId,
                             Broker<?> broker,
@@ -874,4 +876,31 @@ public class ServerConnection extends ConnectionInvoker
         return _ignoreFutureInput;
     }
 
+    void setConnectionCloseCause(final AMQPConnection.CloseReason reason, final String description)
+    {
+        final int cause;
+        switch (reason)
+        {
+            case MANAGEMENT:
+                cause = ErrorCodes.CONNECTION_FORCED;
+                break;
+            case TRANSACTION_TIMEOUT:
+                cause = ErrorCodes.RESOURCE_ERROR;
+                break;
+            default:
+                cause = ErrorCodes.INTERNAL_ERROR;
+        }
+        _connectionCloseCode = cause;
+        _connectionCloseMessage = description;
+    }
+
+    int getConnectionCloseCode()
+    {
+        return _connectionCloseCode;
+    }
+
+    String getConnectionCloseMessage()
+    {
+        return _connectionCloseMessage;
+    }
 }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a9667120/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java b/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
index 015394e..32a2474 100644
--- a/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
+++ b/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
@@ -1168,6 +1168,11 @@ public class ServerSession extends SessionInvoker
         }
 
         LogMessage operationalLoggingMessage = _forcedCloseLogMessage.get();
+        if (operationalLoggingMessage == null && getConnection().getConnectionCloseMessage() != null)
+        {
+            operationalLoggingMessage = ChannelMessages.CLOSE_FORCED(getConnection().getConnectionCloseCode(),
+                                                                     getConnection().getConnectionCloseMessage());
+        }
         if (operationalLoggingMessage == null)
         {
             operationalLoggingMessage = ChannelMessages.CLOSE();
@@ -1254,8 +1259,7 @@ public class ServerSession extends SessionInvoker
         long notificationRepeatPeriod =
                 getModelObject().getContextValue(Long.class, Session.TRANSACTION_TIMEOUT_NOTIFICATION_REPEAT_PERIOD);
         amqpConnection.registerTransactionTickers(_transaction,
-                                                  message -> amqpConnection.closeSessionAsync(_modelObject,
-                                                                                              AMQPConnection.CloseReason.TRANSACTION_TIMEOUT,
+                                                  message -> amqpConnection.sendConnectionCloseAsync(AMQPConnection.CloseReason.TRANSACTION_TIMEOUT,
                                                                                               (String) message),
                                                   notificationRepeatPeriod);
     }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a9667120/systests/protocol-tests-amqp-0-10/src/test/java/org/apache/qpid/tests/protocol/v0_10/TransactionTest.java
----------------------------------------------------------------------
diff --git a/systests/protocol-tests-amqp-0-10/src/test/java/org/apache/qpid/tests/protocol/v0_10/TransactionTest.java b/systests/protocol-tests-amqp-0-10/src/test/java/org/apache/qpid/tests/protocol/v0_10/TransactionTest.java
index 7259e66..7c48e36 100644
--- a/systests/protocol-tests-amqp-0-10/src/test/java/org/apache/qpid/tests/protocol/v0_10/TransactionTest.java
+++ b/systests/protocol-tests-amqp-0-10/src/test/java/org/apache/qpid/tests/protocol/v0_10/TransactionTest.java
@@ -33,19 +33,15 @@ import java.net.InetSocketAddress;
 import org.junit.Before;
 import org.junit.Test;
 
-import org.apache.qpid.server.protocol.v0_10.transport.ExecutionErrorCode;
-import org.apache.qpid.server.protocol.v0_10.transport.ExecutionException;
+import org.apache.qpid.server.protocol.v0_10.transport.ConnectionClose;
+import org.apache.qpid.server.protocol.v0_10.transport.ConnectionCloseCode;
 import org.apache.qpid.server.protocol.v0_10.transport.MessageAcceptMode;
 import org.apache.qpid.server.protocol.v0_10.transport.MessageAcquireMode;
 import org.apache.qpid.server.protocol.v0_10.transport.MessageCreditUnit;
 import org.apache.qpid.server.protocol.v0_10.transport.MessageTransfer;
 import org.apache.qpid.server.protocol.v0_10.transport.Range;
 import org.apache.qpid.server.protocol.v0_10.transport.RangeSet;
-import org.apache.qpid.server.protocol.v0_10.transport.SessionCommandPoint;
 import org.apache.qpid.server.protocol.v0_10.transport.SessionCompleted;
-import org.apache.qpid.server.protocol.v0_10.transport.SessionConfirmed;
-import org.apache.qpid.server.protocol.v0_10.transport.SessionDetach;
-import org.apache.qpid.server.protocol.v0_10.transport.SessionFlush;
 import org.apache.qpid.tests.protocol.Response;
 import org.apache.qpid.tests.protocol.SpecificationTest;
 import org.apache.qpid.tests.utils.BrokerAdmin;
@@ -142,12 +138,9 @@ public class TransactionTest extends BrokerAdminUsingTestBase
 
             Thread.sleep(transactionTimeout + 1000);
 
-            ExecutionException e = receiveResponse(interaction, ExecutionException.class);
-            assertThat(e.getErrorCode(), is(equalTo(ExecutionErrorCode.RESOURCE_LIMIT_EXCEEDED)));
-            assertThat(e.getDescription(), containsString("transaction timed out"));
-
-            SessionDetach detach = receiveResponse(interaction, SessionDetach.class);
-            assertThat(detach.getName(), is(equalTo(sessionName)));
+            ConnectionClose close = receiveResponse(interaction, ConnectionClose.class);
+            assertThat(close.getReplyCode(), is(equalTo(ConnectionCloseCode.CONNECTION_FORCED)));
+            assertThat(close.getReplyText(), containsString("transaction timed out"));
 
             assertThat(getBrokerAdmin().getQueueDepthMessages(BrokerAdmin.TEST_QUEUE_NAME), is(equalTo(0)));
         }
@@ -208,12 +201,9 @@ public class TransactionTest extends BrokerAdminUsingTestBase
 
             Thread.sleep(transactionTimeout + 1000);
 
-            ExecutionException e = receiveResponse(interaction, ExecutionException.class);
-            assertThat(e.getErrorCode(), is(equalTo(ExecutionErrorCode.RESOURCE_LIMIT_EXCEEDED)));
-            assertThat(e.getDescription(), containsString("transaction timed out"));
-
-            SessionDetach detach = receiveResponse(interaction, SessionDetach.class);
-            assertThat(detach.getName(), is(equalTo(sessionName)));
+            ConnectionClose close = receiveResponse(interaction, ConnectionClose.class);
+            assertThat(close.getReplyCode(), is(equalTo(ConnectionCloseCode.CONNECTION_FORCED)));
+            assertThat(close.getReplyText(), containsString("transaction timed out"));
         }
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[2/2] qpid-broker-j git commit: QPID-8091: [Broker-J] Report connection close reason as part of operational log message

Posted by or...@apache.org.
QPID-8091: [Broker-J] Report connection close reason as part of operational log message


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/53cf0201
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/53cf0201
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/53cf0201

Branch: refs/heads/master
Commit: 53cf0201a3d363f3e5f18ef758fd8a6fc3d22b4c
Parents: 31037b0
Author: Alex Rudyy <or...@apache.org>
Authored: Thu Feb 8 14:40:02 2018 +0000
Committer: Alex Rudyy <or...@apache.org>
Committed: Thu Feb 8 16:09:09 2018 +0000

----------------------------------------------------------------------
 .../logging/messages/ConnectionMessages.java    | 34 ++++++++++++++++++--
 .../messages/Connection_logmessages.properties  |  2 +-
 .../transport/AbstractAMQPConnection.java       |  5 ++-
 .../messages/ConnectionMessagesTest.java        | 11 ++++++-
 .../protocol/v0_10/AMQPConnection_0_10Impl.java |  8 +++++
 .../protocol/v0_8/AMQPConnection_0_8Impl.java   | 17 +++++++++-
 .../protocol/v1_0/AMQPConnection_1_0Impl.java   | 15 +++++----
 7 files changed, 78 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/53cf0201/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java b/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java
index 7708ce7..6b2ef11 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/logging/messages/ConnectionMessages.java
@@ -211,16 +211,44 @@ public class ConnectionMessages
 
     /**
      * Log a Connection message of the Format:
-     * <pre>CON-1002 : Close</pre>
+     * <pre>CON-1002 : Close[ : {0}]</pre>
      * Optional values are contained in [square brackets] and are numbered
      * sequentially in the method call.
      *
      */
-    public static LogMessage CLOSE()
+    public static LogMessage CLOSE(String param1, boolean opt1)
     {
         String rawMessage = _messages.getString("CLOSE");
+        StringBuffer msg = new StringBuffer();
 
-        final String message = rawMessage;
+        // Split the formatted message up on the option values so we can
+        // rebuild the message based on the configured options.
+        String[] parts = rawMessage.split("\\[");
+        msg.append(parts[0]);
+
+        int end;
+        if (parts.length > 1)
+        {
+
+            // Add Option : : {0}.
+            end = parts[1].indexOf(']');
+            if (opt1)
+            {
+                msg.append(parts[1].substring(0, end));
+            }
+
+            // Use 'end + 1' to remove the ']' from the output
+            msg.append(parts[1].substring(end + 1));
+        }
+
+        rawMessage = msg.toString();
+
+        final Object[] messageArguments = {param1};
+        // Create a new MessageFormat to ensure thread safety.
+        // Sharing a MessageFormat and using applyPattern is not thread safe
+        MessageFormat formatter = new MessageFormat(rawMessage, _currentLocale);
+
+        final String message = formatter.format(messageArguments);
 
         return new LogMessage()
         {

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/53cf0201/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties b/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties
index 5238559..f66a04c 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties
+++ b/broker-core/src/main/java/org/apache/qpid/server/logging/messages/Connection_logmessages.properties
@@ -19,7 +19,7 @@
 # Default File used for all non-defined locales.
 
 OPEN = CON-1001 : Open : Destination : {0}({1}) : Protocol Version : {2}[ : SSL][ : Client ID : {3}][ : Client Version : {4}][ : Client Product : {5}]
-CLOSE = CON-1002 : Close
+CLOSE = CON-1002 : Close[ : {0}]
 IDLE_CLOSE = CON-1003 : Closed due to inactivity [: {0}]
 DROPPED_CONNECTION = CON-1004 : Connection dropped
 CLIENT_VERSION_LOG = CON-1005 : Client version "{0}" logged by validation

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/53cf0201/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java b/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java
index 05b5f16..ee3996e 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java
@@ -728,8 +728,9 @@ public abstract class AbstractAMQPConnection<C extends AbstractAMQPConnection<C,
             @Override
             public Void run()
             {
+                String closeCause = getCloseCause();
                 getEventLogger().message(isOrderlyClose()
-                                                 ? ConnectionMessages.CLOSE()
+                                                 ? ConnectionMessages.CLOSE(closeCause, closeCause != null)
                                                  : ConnectionMessages.DROPPED_CONNECTION());
                 return null;
             }
@@ -753,6 +754,8 @@ public abstract class AbstractAMQPConnection<C extends AbstractAMQPConnection<C,
 
     protected abstract boolean isOrderlyClose();
 
+    protected abstract String getCloseCause();
+
     @Override
     public int getSessionCount()
     {

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/53cf0201/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ConnectionMessagesTest.java
----------------------------------------------------------------------
diff --git a/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ConnectionMessagesTest.java b/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ConnectionMessagesTest.java
index c820107..058f8b1 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ConnectionMessagesTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ConnectionMessagesTest.java
@@ -85,7 +85,7 @@ public class ConnectionMessagesTest extends AbstractTestMessages
 
     public void testConnectionClose()
     {
-        _logMessage = ConnectionMessages.CLOSE();
+        _logMessage = ConnectionMessages.CLOSE(null, false);
         List<Object> log = performLog();
 
         String[] expected = {"Close"};
@@ -93,4 +93,13 @@ public class ConnectionMessagesTest extends AbstractTestMessages
         validateLogMessage(log, "CON-1002", expected);
     }
 
+    public void testConnectionCloseWithCause()
+    {
+        _logMessage = ConnectionMessages.CLOSE("Test", true);
+        List<Object> log = performLog();
+
+        String[] expected = {"Close : Test"};
+
+        validateLogMessage(log, "CON-1002", expected);
+    }
 }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/53cf0201/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10Impl.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10Impl.java b/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10Impl.java
index e09b48a..3c9fbd1 100755
--- a/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10Impl.java
+++ b/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/AMQPConnection_0_10Impl.java
@@ -72,6 +72,7 @@ public class AMQPConnection_0_10Impl extends AbstractAMQPConnection<AMQPConnecti
 
     private final Set<AMQPSession<?,?>> _sessionsWithWork =
             Collections.newSetFromMap(new ConcurrentHashMap<AMQPSession<?,?>, Boolean>());
+    private volatile String _closeCause;
 
 
     public AMQPConnection_0_10Impl(final Broker<?> broker,
@@ -301,6 +302,7 @@ public class AMQPConnection_0_10Impl extends AbstractAMQPConnection<AMQPConnecti
     @Override
     public void sendConnectionCloseAsync(final CloseReason reason, final String description)
     {
+        _closeCause = description;
         stopConnection();
         // Best mapping for all reasons is "forced"
         _connection.sendConnectionCloseAsync(ConnectionCloseCode.CONNECTION_FORCED, description);
@@ -361,6 +363,12 @@ public class AMQPConnection_0_10Impl extends AbstractAMQPConnection<AMQPConnecti
     }
 
     @Override
+    protected String getCloseCause()
+    {
+        return _closeCause;
+    }
+
+    @Override
     public void initialiseHeartbeating(final long writerDelay, final long readerDelay)
     {
         super.initialiseHeartbeating(writerDelay, readerDelay);

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/53cf0201/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java b/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java
index 0a2e323..eca6d8a 100644
--- a/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java
+++ b/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java
@@ -163,6 +163,9 @@ public class AMQPConnection_0_8Impl
             Collections.newSetFromMap(new ConcurrentHashMap<AMQPSession<?,?>, Boolean>());
 
     private volatile int _heartBeatDelay;
+    private volatile String _closeCause;
+    private volatile int _closeCauseCode;
+
 
     public AMQPConnection_0_8Impl(Broker<?> broker,
                                   ServerNetworkConnection network,
@@ -486,7 +489,7 @@ public class AMQPConnection_0_8Impl
             {
                 try
                 {
-                    channel.close();
+                    channel.close(_closeCauseCode, _closeCause);
                 }
                 catch (RuntimeException re)
                 {
@@ -699,6 +702,16 @@ public class AMQPConnection_0_8Impl
     }
 
     @Override
+    protected String getCloseCause()
+    {
+        if (_closeCause == null)
+        {
+            return null;
+        }
+        return _closeCauseCode + " - " + _closeCause;
+    }
+
+    @Override
     public void encryptedTransport()
     {
     }
@@ -794,6 +807,8 @@ public class AMQPConnection_0_8Impl
             default:
                 cause = ErrorCodes.INTERNAL_ERROR;
         }
+        _closeCauseCode = cause;
+        _closeCause = description;
         Action<AMQPConnection_0_8Impl> action = new Action<AMQPConnection_0_8Impl>()
         {
             @Override

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/53cf0201/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0Impl.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0Impl.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0Impl.java
index e440187..03954b4 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0Impl.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0Impl.java
@@ -50,7 +50,6 @@ import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
 
-import com.google.common.base.Supplier;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.PeekingIterator;
 import com.google.common.collect.Sets;
@@ -59,15 +58,12 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
-import org.apache.qpid.server.logging.EventLogger;
-import org.apache.qpid.server.logging.messages.ChannelMessages;
 import org.apache.qpid.server.logging.messages.ConnectionMessages;
 import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.Connection;
 import org.apache.qpid.server.model.NamedAddressSpace;
 import org.apache.qpid.server.model.Protocol;
-import org.apache.qpid.server.model.Session;
 import org.apache.qpid.server.model.Transport;
 import org.apache.qpid.server.model.port.AmqpPort;
 import org.apache.qpid.server.plugin.ConnectionPropertyEnricher;
@@ -128,15 +124,12 @@ import org.apache.qpid.server.transport.AggregateTicker;
 import org.apache.qpid.server.transport.ByteBufferSender;
 import org.apache.qpid.server.transport.ProtocolEngine;
 import org.apache.qpid.server.transport.ServerNetworkConnection;
-import org.apache.qpid.server.transport.TransactionTimeoutTicker;
-import org.apache.qpid.server.transport.network.Ticker;
 import org.apache.qpid.server.transport.util.Functions;
 import org.apache.qpid.server.txn.LocalTransaction;
 import org.apache.qpid.server.txn.ServerTransaction;
 import org.apache.qpid.server.util.Action;
 import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
-import org.apache.qpid.server.virtualhost.QueueManagingVirtualHost;
 import org.apache.qpid.server.virtualhost.VirtualHostUnavailableException;
 
 public class AMQPConnection_1_0Impl extends AbstractAMQPConnection<AMQPConnection_1_0Impl, ConnectionHandler>
@@ -243,6 +236,7 @@ public class AMQPConnection_1_0Impl extends AbstractAMQPConnection<AMQPConnectio
     // Multi session transactions
     private volatile ServerTransaction[] _openTransactions = new ServerTransaction[16];
     private volatile boolean _sendSaslFinalChallengeAsChallenge;
+    private volatile String _closeCause;
 
     AMQPConnection_1_0Impl(final Broker<?> broker,
                            final ServerNetworkConnection network,
@@ -1172,6 +1166,7 @@ public class AMQPConnection_1_0Impl extends AbstractAMQPConnection<AMQPConnectio
 
     private void closeConnection(final Error error)
     {
+        _closeCause = error.getDescription();
         Close close = new Close();
         close.setError(error);
         switch (_connectionState)
@@ -1710,6 +1705,12 @@ public class AMQPConnection_1_0Impl extends AbstractAMQPConnection<AMQPConnectio
     }
 
     @Override
+    protected String getCloseCause()
+    {
+        return _closeCause;
+    }
+
+    @Override
     public boolean getSendSaslFinalChallengeAsChallenge()
     {
         return _sendSaslFinalChallengeAsChallenge;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org