You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2019/06/21 19:01:45 UTC
[activemq-artemis] 01/03: ARTEMIS-2391 static address may be
auto-deleted
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
commit 3b82cad0245b03e773d5de9c253feb66b0be2238
Author: Justin Bertram <jb...@apache.org>
AuthorDate: Thu Jun 20 13:39:45 2019 -0500
ARTEMIS-2391 static address may be auto-deleted
---
.../core/postoffice/impl/PostOfficeImpl.java | 6 +--
.../server/AddressQueueDeleteDelayTest.java | 50 ++++++++++++++++++++++
2 files changed, 53 insertions(+), 3 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 1bcff22..c7559be 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
@@ -1512,7 +1512,7 @@ public class PostOfficeImpl implements PostOffice, NotificationListener, Binding
return true;
}
- /**
+ /**
* The expiry scanner can't be started until the whole server has been started other wise you may get races
*/
@Override
@@ -1601,10 +1601,10 @@ public class PostOfficeImpl implements PostOffice, NotificationListener, Binding
AddressSettings settings = addressSettingsRepository.getMatch(address.toString());
try {
- if (addressInfo != null && !isAddressBound(address) && addressInfo.getBindingRemovedTimestamp() != -1 && (System.currentTimeMillis() - addressInfo.getBindingRemovedTimestamp() >= settings.getAutoDeleteAddressesDelay())) {
+ if (settings.isAutoDeleteAddresses() && addressInfo != null && addressInfo.isAutoCreated() && !isAddressBound(address) && addressInfo.getBindingRemovedTimestamp() != -1 && (System.currentTimeMillis() - addressInfo.getBindingRemovedTimestamp() >= settings.getAutoDeleteAddressesDelay())) {
if (ActiveMQServerLogger.LOGGER.isDebugEnabled()) {
- ActiveMQServerLogger.LOGGER.info("deleting auto-created address \"" + address + ".\"");
+ ActiveMQServerLogger.LOGGER.debug("deleting auto-created address \"" + address + ".\"");
}
server.removeAddressInfo(address, null);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/AddressQueueDeleteDelayTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/AddressQueueDeleteDelayTest.java
index 27ee6eb..0932482 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/AddressQueueDeleteDelayTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/AddressQueueDeleteDelayTest.java
@@ -163,6 +163,56 @@ public class AddressQueueDeleteDelayTest extends ActiveMQTestBase {
assertTrue(Wait.waitFor(() -> server.getAddressInfo(address) == null, DURATION_MILLIS, SLEEP_MILLIS));
}
+ @Test
+ public void testAddressDeleteDelay() throws Exception {
+ SimpleString address = RandomUtil.randomSimpleString();
+ SimpleString queue = RandomUtil.randomSimpleString();
+ final long deleteAddressesDelay = 500;
+
+ AddressSettings addressSettings = new AddressSettings().setAutoDeleteAddressesDelay(deleteAddressesDelay);
+ server.getAddressSettingsRepository().addMatch(address.toString(), addressSettings);
+
+ session.createAddress(address, RoutingType.MULTICAST, true);
+ session.createQueue(address, RoutingType.MULTICAST, queue);
+ session.deleteQueue(queue);
+
+ assertTrue(Wait.waitFor(() -> server.getAddressInfo(address) == null, DURATION_MILLIS, SLEEP_MILLIS));
+ }
+
+ @Test
+ public void testAddressDeleteDelayNegative() throws Exception {
+ SimpleString address = RandomUtil.randomSimpleString();
+ SimpleString queue = RandomUtil.randomSimpleString();
+ final long deleteAddressesDelay = 500;
+
+ AddressSettings addressSettings = new AddressSettings().setAutoDeleteAddressesDelay(deleteAddressesDelay);
+ server.getAddressSettingsRepository().addMatch(address.toString(), addressSettings);
+
+ // the address should not be deleted since it is not auto-created
+ session.createAddress(address, RoutingType.MULTICAST, false);
+ session.createQueue(address, RoutingType.MULTICAST, queue);
+ session.deleteQueue(queue);
+
+ assertFalse(Wait.waitFor(() -> server.getAddressInfo(address) == null, DURATION_MILLIS, SLEEP_MILLIS));
+ }
+
+ @Test
+ public void testAddressDeleteDelayNegative2() throws Exception {
+ SimpleString address = RandomUtil.randomSimpleString();
+ SimpleString queue = RandomUtil.randomSimpleString();
+ final long deleteAddressesDelay = 500;
+
+ // the address should not be deleted since autoDeleteAddresses = false
+ AddressSettings addressSettings = new AddressSettings().setAutoDeleteAddressesDelay(deleteAddressesDelay).setAutoDeleteAddresses(false);
+ server.getAddressSettingsRepository().addMatch(address.toString(), addressSettings);
+
+ session.createAddress(address, RoutingType.MULTICAST, true);
+ session.createQueue(address, RoutingType.MULTICAST, queue);
+ session.deleteQueue(queue);
+
+ assertFalse(Wait.waitFor(() -> server.getAddressInfo(address) == null, DURATION_MILLIS, SLEEP_MILLIS));
+ }
+
@Override
@Before
public void setUp() throws Exception {