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

jbertram 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 ea09a0f  ARTEMIS-2638 retro resources created recursively w/# match
     new a38d586  This closes #3004
ea09a0f is described below

commit ea09a0fd39290d63a711f4353096a7092f2a6cfd
Author: Justin Bertram <[email protected]>
AuthorDate: Thu Mar 5 21:00:15 2020 -0600

    ARTEMIS-2638 retro resources created recursively w/# match
---
 .../artemis/core/postoffice/impl/PostOfficeImpl.java      |  2 +-
 .../tests/integration/server/RetroactiveAddressTest.java  | 15 ++++++++++++---
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
index f74c505..7f207c9 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
@@ -466,7 +466,7 @@ public class PostOfficeImpl implements PostOffice, 
NotificationListener, Binding
                   server.callBrokerAddressPlugins(plugin -> 
plugin.afterAddAddress(addressInfo, reload));
                }
                long retroactiveMessageCount = 
addressSettingsRepository.getMatch(addressInfo.getName().toString()).getRetroactiveMessageCount();
-               if (retroactiveMessageCount > 0) {
+               if (retroactiveMessageCount > 0 && !addressInfo.isInternal() && 
!ResourceNames.isRetroactiveResource(server.getInternalNamingPrefix(), 
addressInfo.getName())) {
                   createRetroactiveResources(addressInfo.getName(), 
retroactiveMessageCount, reload);
                }
                if 
(ResourceNames.isRetroactiveResource(server.getInternalNamingPrefix(), 
addressInfo.getName())) {
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/RetroactiveAddressTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/RetroactiveAddressTest.java
index 21a8dc3..06bce01 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/RetroactiveAddressTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/RetroactiveAddressTest.java
@@ -100,13 +100,22 @@ public class RetroactiveAddressTest extends 
ActiveMQTestBase {
    }
 
    @Test
-   public void testRetroactiveResourceCreation() throws Exception {
-      final SimpleString addressName = 
SimpleString.toSimpleString("myAddress");
+   public void testRetroactiveResourceCreationWithExactMatch() throws 
Exception {
+      internalTestRetroactiveResourceCreation("myAddress", "myAddress");
+   }
+
+   @Test
+   public void testRetroactiveResourceCreationWithWildcardMatch() throws 
Exception {
+      internalTestRetroactiveResourceCreation("myAddress", "#");
+   }
+
+   private void internalTestRetroactiveResourceCreation(String address, String 
match) throws Exception {
+      final SimpleString addressName = SimpleString.toSimpleString(address);
       final SimpleString divertAddress = 
ResourceNames.getRetroactiveResourceAddressName(internalNamingPrefix, 
delimiter, addressName);
       final SimpleString divertMulticastQueue = 
ResourceNames.getRetroactiveResourceQueueName(internalNamingPrefix, delimiter, 
addressName, RoutingType.MULTICAST);
       final SimpleString divertAnycastQueue = 
ResourceNames.getRetroactiveResourceQueueName(internalNamingPrefix, delimiter, 
addressName, RoutingType.ANYCAST);
       final SimpleString divert = 
ResourceNames.getRetroactiveResourceDivertName(internalNamingPrefix, delimiter, 
addressName);
-      server.getAddressSettingsRepository().addMatch(addressName.toString(), 
new AddressSettings().setRetroactiveMessageCount(10));
+      server.getAddressSettingsRepository().addMatch(match, new 
AddressSettings().setRetroactiveMessageCount(10));
       server.addAddressInfo(new AddressInfo(addressName));
       assertNotNull(server.getAddressInfo(divertAddress));
       assertNotNull(server.locateQueue(divertMulticastQueue));

Reply via email to