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

clebertsuconic pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git

commit 1fa5c761c67e3b5f26baca415662d5645101ab2c
Author: Justin Bertram <[email protected]>
AuthorDate: Wed Apr 26 15:25:47 2023 -0500

    ARTEMIS-4212 fix management address issues
---
 .../core/server/impl/ActiveMQServerImpl.java       |  2 +-
 .../core/server/impl/ServerSessionImpl.java        |  4 +++
 .../JMSMismatchedRoutingTypeTest.java              | 36 ++++++++++++++++++++++
 3 files changed, 41 insertions(+), 1 deletion(-)

diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
index 9259b8802d..20690cb835 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
@@ -1068,7 +1068,7 @@ public class ActiveMQServerImpl implements ActiveMQServer 
{
       ManagementService managementService = getManagementService();
       if (managementService != null) {
          if (realAddress.equals(managementService.getManagementAddress())) {
-            return new BindingQueryResult(true, null, Collections.emptyList(), 
autoCreateQeueus, autoCreateAddresses, defaultPurgeOnNoConsumers, 
defaultMaxConsumers, defaultExclusive, defaultLastValue, defaultLastValueKey, 
defaultNonDestructive, defaultConsumersBeforeDispatch, 
defaultDelayBeforeDispatch);
+            return new BindingQueryResult(true, new 
AddressInfo(managementService.getManagementAddress(), 
EnumSet.allOf(RoutingType.class)), Collections.emptyList(), autoCreateQeueus, 
autoCreateAddresses, defaultPurgeOnNoConsumers, defaultMaxConsumers, 
defaultExclusive, defaultLastValue, defaultLastValueKey, defaultNonDestructive, 
defaultConsumersBeforeDispatch, defaultDelayBeforeDispatch);
          }
       }
 
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
index 77ca360486..6d85381bd2 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
@@ -1754,6 +1754,10 @@ public class ServerSessionImpl implements ServerSession, 
FailureListener {
       SimpleString unPrefixedQueue = removePrefix(queueConfig.getName());
       AddressSettings addressSettings =  
server.getAddressSettingsRepository().getMatch(unPrefixedAddress.toString());
 
+      if 
(unPrefixedAddress.equals(server.getManagementService().getManagementAddress()))
 {
+         return AutoCreateResult.EXISTED;
+      }
+
       /*
        * This is only here to maintain backwards compatibility with the 
previous implementation.
        *
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMismatchedRoutingTypeTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMismatchedRoutingTypeTest.java
index f962e973b6..f541dead65 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMismatchedRoutingTypeTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMismatchedRoutingTypeTest.java
@@ -19,8 +19,11 @@ package 
org.apache.activemq.artemis.tests.integration.jms.multiprotocol;
 import javax.jms.Connection;
 import javax.jms.InvalidDestinationException;
 import javax.jms.JMSException;
+import javax.jms.Message;
 import javax.jms.MessageProducer;
 import javax.jms.Queue;
+import javax.jms.QueueRequestor;
+import javax.jms.QueueSession;
 import javax.jms.Session;
 import javax.jms.Topic;
 
@@ -135,4 +138,37 @@ public class JMSMismatchedRoutingTypeTest extends 
MultiprotocolJMSClientTestSupp
          }
       }
    }
+
+   @Test
+   public void testManagementQueueRequestorAMQP() throws Exception {
+      internalTestManagementQueueRequestor(AMQPConnection);
+   }
+
+   @Test
+   public void testManagementQueueRequestorCore() throws Exception {
+      internalTestManagementQueueRequestor(CoreConnection);
+   }
+
+   @Test
+   public void testManagementQueueRequestorOpenWire() throws Exception {
+      internalTestManagementQueueRequestor(OpenWireConnection);
+   }
+
+   private void internalTestManagementQueueRequestor(ConnectionSupplier 
connectionSupplier) throws Exception {
+      Connection connection = null;
+      try {
+         connection = connectionSupplier.createConnection();
+         Session session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
+         Queue managementQueue = 
session.createQueue(server.getConfiguration().getManagementAddress().toString());
+         QueueRequestor requestor = new 
QueueRequestor(((QueueSession)session), managementQueue);
+         connection.start();
+         Message m = session.createMessage();
+         Message response = requestor.request(m);
+         assertNotNull(response);
+      } finally {
+         if (connection != null) {
+            connection.close();
+         }
+      }
+   }
 }
\ No newline at end of file

Reply via email to