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:39 UTC
[2/2] qpid-broker-j git commit: QPID-8091: [Broker-J] Report
connection close reason as part of operational log message
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