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 2021/06/13 23:04:23 UTC

[qpid-broker-j] branch 8.0.x updated: QPID-8483: [Broker-J] Report peer session name as part of 0-10 session subject

This is an automated email from the ASF dual-hosted git repository.

orudyy pushed a commit to branch 8.0.x
in repository https://gitbox.apache.org/repos/asf/qpid-broker-j.git


The following commit(s) were added to refs/heads/8.0.x by this push:
     new 2b1a714  QPID-8483: [Broker-J] Report peer session name as part of 0-10 session subject
2b1a714 is described below

commit 2b1a714caef3bcbf1492962cb298c4ca3372082d
Author: Alex Rudyy <or...@apache.org>
AuthorDate: Wed Dec 2 23:46:32 2020 +0000

    QPID-8483: [Broker-J] Report peer session name as part of 0-10 session subject
---
 .../qpid/server/logging/AbstractMessageLogger.java  | 15 +--------------
 .../server/logging/subjects/ChannelLogSubject.java  | 14 ++------------
 .../qpid/server/session/AbstractAMQPSession.java    | 10 +++++++---
 .../logging/subjects/ChannelLogSubjectTest.java     | 12 +-----------
 .../qpid/server/protocol/v0_10/ServerSession.java   | 17 +----------------
 .../qpid/server/protocol/v0_10/Session_0_10.java    | 12 +++++++-----
 .../qpid/server/protocol/v0_8/AMQChannel.java       |  2 +-
 .../qpid/server/protocol/v1_0/Session_1_0.java      | 21 +++------------------
 8 files changed, 23 insertions(+), 80 deletions(-)

diff --git a/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractMessageLogger.java b/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractMessageLogger.java
index 215883c..e511920 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractMessageLogger.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractMessageLogger.java
@@ -21,7 +21,6 @@
 package org.apache.qpid.server.logging;
 
 
-import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.CHANNEL_FORMAT;
 import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.CONNECTION_FORMAT;
 import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.SOCKET_FORMAT;
 import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.USER_FORMAT;
@@ -219,19 +218,7 @@ public abstract class AbstractMessageLogger implements MessageLogger
 
     private static String generateSessionActor(final AMQPSession session)
     {
-        AMQPConnection<?> connection = session.getAMQPConnection();
-        return "[" + MessageFormat.format(CHANNEL_FORMAT, connection == null ? -1L : connection.getConnectionId(),
-                                          (connection == null || connection.getAuthorizedPrincipal() == null)
-                                                  ? "?"
-                                                  : connection.getAuthorizedPrincipal().getName(),
-                                          (connection == null || connection.getRemoteAddressString() == null)
-                                                  ? "?"
-                                                  : connection.getRemoteAddressString(),
-                                          (connection == null || connection.getAddressSpaceName() == null)
-                                                  ? "?"
-                                                  : connection.getAddressSpaceName(),
-                                          session.getChannelId())
-               + "] ";
+        return session.getLogSubject().toLogString();
     }
 
     private static <P extends Principal> P getPrincipal(Subject subject, Class<P> clazz)
diff --git a/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java b/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java
index f0d1369..c41ae7d 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java
@@ -1,5 +1,4 @@
 /*
- *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -22,19 +21,11 @@ package org.apache.qpid.server.logging.subjects;
 
 import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.CHANNEL_FORMAT;
 
-import org.apache.qpid.server.session.AMQPSession;
 import org.apache.qpid.server.transport.AMQPConnection;
 
 public class ChannelLogSubject extends AbstractLogSubject
 {
-    private final AMQPSession<?,?> _sessionModel;
-    public ChannelLogSubject(AMQPSession<?,?> session)
-    {
-        _sessionModel = session;
-        updateSessionDetails();
-    }
-
-    public void updateSessionDetails()
+    public ChannelLogSubject(AMQPConnection connection, Object channelId)
     {
         /**
          * LOG FORMAT used by the AMQPConnectorActor follows
@@ -49,12 +40,11 @@ public class ChannelLogSubject extends AbstractLogSubject
          * 3 - Virtualhost
          * 4 - Channel ID
          */
-        AMQPConnection connection = _sessionModel.getAMQPConnection();
         setLogStringWithFormat(CHANNEL_FORMAT,
                                connection == null ? -1L : connection.getConnectionId(),
                                (connection == null || connection.getAuthorizedPrincipal() == null) ? "?" : connection.getAuthorizedPrincipal().getName(),
                                (connection == null || connection.getRemoteAddressString() == null) ? "?" : connection.getRemoteAddressString(),
                                (connection == null || connection.getAddressSpaceName() == null) ? "?" : connection.getAddressSpaceName(),
-                               _sessionModel.getChannelId());
+                               channelId);
     }
 }
diff --git a/broker-core/src/main/java/org/apache/qpid/server/session/AbstractAMQPSession.java b/broker-core/src/main/java/org/apache/qpid/server/session/AbstractAMQPSession.java
index b697d16..05dd46e 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/session/AbstractAMQPSession.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/session/AbstractAMQPSession.java
@@ -79,12 +79,11 @@ public abstract class AbstractAMQPSession<S extends AbstractAMQPSession<S, X>,
     protected final SecurityToken _token;
     protected final PublishAuthorisationCache _publishAuthCache;
 
-    protected final LogSubject _logSubject;
-
     protected final List<Action<? super S>> _taskList = new CopyOnWriteArrayList<>();
     private final AtomicInteger _consumerCount = new AtomicInteger();
 
     protected final Set<AbstractConsumerTarget> _consumersWithPendingWork = new ScheduledConsumerTargetSet<>();
+    private final LogSubject _logSubject;
     private Iterator<AbstractConsumerTarget> _processPendingIterator;
     private final Set<Consumer<?,X>> _consumers = ConcurrentHashMap.newKeySet();
 
@@ -97,6 +96,11 @@ public abstract class AbstractAMQPSession<S extends AbstractAMQPSession<S, X>,
 
     protected AbstractAMQPSession(final Connection<?> parent, final int sessionId)
     {
+        this(parent, sessionId, new ChannelLogSubject((AMQPConnection) parent, sessionId));
+    }
+
+    protected AbstractAMQPSession(final Connection<?> parent, final int sessionId, final LogSubject logSubject)
+    {
         super(parent, createAttributes(sessionId));
         _connection = (AMQPConnection) parent;
         _sessionId = sessionId;
@@ -130,7 +134,7 @@ public abstract class AbstractAMQPSession<S extends AbstractAMQPSession<S, X>,
         final long authCacheTimeout = _connection.getContextValue(Long.class, Session.PRODUCER_AUTH_CACHE_TIMEOUT);
         final int authCacheSize = _connection.getContextValue(Integer.class, Session.PRODUCER_AUTH_CACHE_SIZE);
         _publishAuthCache = new PublishAuthorisationCache(_token, authCacheTimeout, authCacheSize);
-        _logSubject = new ChannelLogSubject(this);
+        _logSubject = logSubject;
 
         setState(State.ACTIVE);
     }
diff --git a/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ChannelLogSubjectTest.java b/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ChannelLogSubjectTest.java
index cf98bde..8a2c479 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ChannelLogSubjectTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ChannelLogSubjectTest.java
@@ -1,5 +1,4 @@
 /*
- *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -20,13 +19,8 @@
  */
 package org.apache.qpid.server.logging.subjects;
 
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
 import org.junit.Assert;
 
-import org.apache.qpid.server.session.AMQPSession;
-
 /**
  * Validate ChannelLogSubjects are logged as expected
  */
@@ -38,11 +32,7 @@ public class ChannelLogSubjectTest extends ConnectionLogSubjectTest
     public void setUp() throws Exception
     {
         super.setUp();
-
-        AMQPSession<?,?> session = mock(AMQPSession.class);
-        when(session.getAMQPConnection()).thenReturn(getConnection());
-        when(session.getChannelId()).thenReturn(_channelID);
-        _subject = new ChannelLogSubject(session);
+        _subject = new ChannelLogSubject(getConnection(), _channelID);
     }
 
     /**
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 6846356..5d7c301 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
@@ -20,7 +20,6 @@
  */
 package org.apache.qpid.server.protocol.v0_10;
 
-import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.CHANNEL_FORMAT;
 import static org.apache.qpid.server.protocol.v0_10.ServerSession.State.CLOSED;
 import static org.apache.qpid.server.protocol.v0_10.ServerSession.State.CLOSING;
 import static org.apache.qpid.server.protocol.v0_10.ServerSession.State.DETACHED;
@@ -41,7 +40,6 @@ import java.security.AccessControlContext;
 import java.security.AccessController;
 import java.security.Principal;
 import java.security.PrivilegedAction;
-import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -1521,20 +1519,7 @@ public class ServerSession extends SessionInvoker
     @Override
     public String toLogString()
     {
-        long connectionId = getConnection() instanceof ServerConnection
-                            ? getConnection().getConnectionId()
-                            : -1;
-        String authorizedPrincipal = (getAuthorizedPrincipal() == null) ? "?" : getAuthorizedPrincipal().getName();
-
-        String remoteAddress = String.valueOf(getConnection().getRemoteSocketAddress());
-        return "[" +
-               MessageFormat.format(CHANNEL_FORMAT,
-                                    connectionId,
-                                    authorizedPrincipal,
-                                    remoteAddress,
-                                    getAddressSpace().getName(),
-                                    getChannel())
-            + "] ";
+        return _modelObject.toLogString();
     }
 
     public void close(int cause, String message)
diff --git a/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/Session_0_10.java b/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/Session_0_10.java
index d8197be..9fb0dd0 100644
--- a/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/Session_0_10.java
+++ b/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/Session_0_10.java
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.security.auth.Subject;
 
 import org.apache.qpid.server.logging.LogSubject;
+import org.apache.qpid.server.logging.subjects.ChannelLogSubject;
 import org.apache.qpid.server.model.Connection;
 import org.apache.qpid.server.model.Queue;
 import org.apache.qpid.server.protocol.PublishAuthorisationCache;
@@ -33,17 +34,18 @@ import org.apache.qpid.server.session.AbstractAMQPSession;
 import org.apache.qpid.server.util.Action;
 
 public class Session_0_10 extends AbstractAMQPSession<Session_0_10, ConsumerTarget_0_10>
-        implements LogSubject, org.apache.qpid.server.util.Deletable<Session_0_10> ,Session<Session_0_10>
+        implements LogSubject, org.apache.qpid.server.util.Deletable<Session_0_10> , Session<Session_0_10>
 {
     private final AMQPConnection_0_10 _connection;
     private final ServerSession _serverSession;
-    private String _peerSessionName;
+    private final String _peerSessionName;
 
     protected Session_0_10(final Connection<?> parent,
                            final int sessionId,
-                           final ServerSession serverSession, final String peerSessionName)
+                           final ServerSession serverSession,
+                           final String peerSessionName)
     {
-        super(parent, sessionId);
+        super(parent, sessionId, new ChannelLogSubject((AMQPConnection_0_10) parent, String.format("%d:%s", sessionId, peerSessionName)));
         _peerSessionName = peerSessionName;
         _connection = (AMQPConnection_0_10) parent;
         _serverSession = serverSession;
@@ -52,7 +54,7 @@ public class Session_0_10 extends AbstractAMQPSession<Session_0_10, ConsumerTarg
     @Override
     public String toLogString()
     {
-        return _serverSession.toLogString();
+        return getLogSubject().toLogString();
     }
 
     @Override
diff --git a/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java b/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
index 6f006b8..d526663 100644
--- a/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
+++ b/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
@@ -799,7 +799,7 @@ public class AMQChannel extends AbstractAMQPSession<AMQChannel, ConsumerTarget_0
 
     private void messageWithSubject(final LogMessage operationalLogMessage)
     {
-        getEventLogger().message(_logSubject, operationalLogMessage);
+        getEventLogger().message(getLogSubject(), operationalLogMessage);
     }
 
     private void unsubscribeAllConsumers()
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
index 076dc43..d3abefc 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
@@ -20,13 +20,10 @@
  */
 package org.apache.qpid.server.protocol.v1_0;
 
-import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.CHANNEL_FORMAT;
-
 import java.security.AccessControlContext;
 import java.security.AccessControlException;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -106,7 +103,6 @@ import org.apache.qpid.server.queue.CreatingLinkInfo;
 import org.apache.qpid.server.queue.CreatingLinkInfoImpl;
 import org.apache.qpid.server.security.SecurityToken;
 import org.apache.qpid.server.session.AbstractAMQPSession;
-import org.apache.qpid.server.transport.AMQPConnection;
 import org.apache.qpid.server.txn.ServerTransaction;
 import org.apache.qpid.server.util.Action;
 import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
@@ -1009,7 +1005,7 @@ public class Session_1_0 extends AbstractAMQPSession<Session_1_0, ConsumerTarget
             {
                 task.performAction(this);
             }
-            getAMQPConnection().getEventLogger().message(_logSubject,ChannelMessages.CLOSE());
+            getAMQPConnection().getEventLogger().message(getLogSubject(), ChannelMessages.CLOSE());
         }
     }
 
@@ -1153,7 +1149,7 @@ public class Session_1_0 extends AbstractAMQPSession<Session_1_0, ConsumerTarget
 
     private void messageWithSubject(final LogMessage operationalLogMessage)
     {
-        getEventLogger().message(_logSubject, operationalLogMessage);
+        getEventLogger().message(getLogSubject(), operationalLogMessage);
     }
 
     @Override
@@ -1171,18 +1167,7 @@ public class Session_1_0 extends AbstractAMQPSession<Session_1_0, ConsumerTarget
     @Override
     public String toLogString()
     {
-        final AMQPConnection<?> amqpConnection = getAMQPConnection();
-        long connectionId = amqpConnection.getConnectionId();
-
-        String remoteAddress = amqpConnection.getRemoteAddressString();
-        final String authorizedPrincipal = amqpConnection.getAuthorizedPrincipal() == null ? "?" : amqpConnection.getAuthorizedPrincipal().getName();
-        return "[" +
-               MessageFormat.format(CHANNEL_FORMAT,
-                                    connectionId,
-                                    authorizedPrincipal,
-                                    remoteAddress,
-                                    getAddressSpace().getName(),
-                                    _sendingChannel) + "] ";
+        return getLogSubject().toLogString();
     }
 
     public AMQPConnection_1_0<?> getConnection()

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