ARTEMIS-1688 fix cluster when auto-create-addresses=false

Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/5ad45369
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/5ad45369
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/5ad45369

Branch: refs/heads/master
Commit: 5ad45369ce22423543146b47cc9feb8a6db89cbf
Parents: 26c284b
Author: Justin Bertram <jbert...@apache.org>
Authored: Fri Feb 16 16:44:17 2018 -0600
Committer: Clebert Suconic <clebertsuco...@apache.org>
Committed: Mon Feb 19 11:36:11 2018 -0500

----------------------------------------------------------------------
 .../management/impl/ManagementServiceImpl.java  |  6 +++
 .../distribution/SymmetricClusterTest.java      | 42 ++++++++++++++++++++
 2 files changed, 48 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5ad45369/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
index 9b9830a..7d0a29e 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
@@ -540,6 +540,12 @@ public class ManagementServiceImpl implements 
ManagementService {
       }
 
       started = true;
+
+      /**
+       * Ensure the management notification address is created otherwise if 
auto-create-address = false then cluster
+       * bridges won't be able to connect.
+       */
+      messagingServer.addAddressInfo(new 
AddressInfo(managementNotificationAddress, RoutingType.MULTICAST));
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5ad45369/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterTest.java
----------------------------------------------------------------------
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterTest.java
index ca4554f..79b2d00 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterTest.java
@@ -16,7 +16,11 @@
  */
 package org.apache.activemq.artemis.tests.integration.cluster.distribution;
 
+import org.apache.activemq.artemis.api.core.RoutingType;
+import org.apache.activemq.artemis.api.core.SimpleString;
 import 
org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancingType;
+import org.apache.activemq.artemis.core.server.impl.AddressInfo;
+import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
 import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
 import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
 import org.junit.Before;
@@ -230,6 +234,44 @@ public class SymmetricClusterTest extends ClusterTestBase {
    }
 
    @Test
+   public void testBasicRoundRobinManyMessagesNoAddressAutoCreate() throws 
Exception {
+      setupCluster();
+
+      startServers();
+
+      for (int i = 0; i < 5; i++) {
+         servers[i].getAddressSettingsRepository().addMatch("#", new 
AddressSettings().setAutoCreateAddresses(false).setAutoCreateQueues(false));
+      }
+
+      for (int i = 0; i < 5; i++) {
+         setupSessionFactory(i, isNetty());
+      }
+
+      for (int i = 0; i < 5; i++) {
+         servers[i].addAddressInfo(new 
AddressInfo(SimpleString.toSimpleString("queues.testaddress"), 
RoutingType.MULTICAST));
+         createQueue(i, "queues.testaddress", "queue0", null, false);
+      }
+
+      for (int i = 0; i < 5; i++) {
+         addConsumer(i, i, "queue0", null);
+      }
+
+      for (int i = 0; i < 5; i++) {
+         waitForBindings(i, "queues.testaddress", 1, 1, true);
+      }
+
+      for (int i = 0; i < 5; i++) {
+         waitForBindings(i, "queues.testaddress", 4, 4, false);
+      }
+
+      send(0, "queues.testaddress", 1000, true, null);
+
+      verifyReceiveRoundRobinInSomeOrder(1000, 0, 1, 2, 3, 4);
+
+      verifyNotReceive(0, 1, 2, 3, 4);
+   }
+
+   @Test
    public void testRoundRobinMultipleQueues() throws Exception {
       SymmetricClusterTest.log.info("starting");
       setupCluster();

Reply via email to