[activemq-artemis] branch master updated: ARTEMIS-2534 Deleting addresses auto created on configuration reload

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[activemq-artemis] branch master updated: ARTEMIS-2534 Deleting addresses auto created on configuration reload

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 83e2595  ARTEMIS-2534 Deleting addresses auto created on configuration reload
     new 367f18b  This closes #2878
83e2595 is described below

commit 83e2595618622ff19b91c80890e9f6566f6a5b4b
Author: brusdev <[hidden email]>
AuthorDate: Wed Oct 30 16:30:27 2019 +0100

    ARTEMIS-2534 Deleting addresses auto created on configuration reload
   
    Skip the deletion of address's and queue's auto created on configuration
    reload.
---
 .../apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java  | 4 +++-
 .../apache/activemq/artemis/tests/integration/jms/RedeployTest.java   | 4 ++++
 2 files changed, 7 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 3628675..25486c4 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
@@ -3014,9 +3014,11 @@ public class ActiveMQServerImpl implements ActiveMQServer {
               .collect(Collectors.toSet());
 
       for (SimpleString addressName : listAddressNames()) {
+         AddressInfo addressInfo = getAddressInfo(addressName);
          AddressSettings addressSettings = getAddressSettingsRepository().getMatch(addressName.toString());
 
-         if (!addressesInConfig.contains(addressName.toString()) && addressSettings.getConfigDeleteAddresses() == DeletionPolicy.FORCE) {
+         if (!addressesInConfig.contains(addressName.toString()) && addressInfo != null && !addressInfo.isAutoCreated() &&
+            addressSettings.getConfigDeleteAddresses() == DeletionPolicy.FORCE) {
             for (Queue queue : listQueues(addressName)) {
                ActiveMQServerLogger.LOGGER.undeployQueue(queue.getName());
                try {
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java
index e94f12b..cb9dca4 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java
@@ -84,6 +84,8 @@ public class RedeployTest extends ActiveMQTestBase {
          Assert.assertNotNull("Address wasn't autocreated accordingly", consumer.receive(5000));
       }
 
+      Assert.assertNotNull(getQueue(embeddedActiveMQ, "autoQueue"));
+
       // this simulates a remote queue or other type being added that wouldnt get deleted, its not valid to have this happen but it can happen when addresses and queues are auto created in a clustered env
       embeddedActiveMQ.getActiveMQServer().getPostOffice().addBinding(new RemoteQueueBindingImpl(5L,
               new SimpleString("autoQueue"),
@@ -117,6 +119,8 @@ public class RedeployTest extends ActiveMQTestBase {
 
          Assert.assertTrue(tryConsume());
 
+         Assert.assertNotNull(getQueue(embeddedActiveMQ, "autoQueue"));
+
          factory = new ActiveMQConnectionFactory();
          try (Connection connection = factory.createConnection()) {
             Session session = connection.createSession();