You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by jb...@apache.org on 2020/06/24 17:55:00 UTC
[activemq-artemis] branch master updated: ARTEMIS-2819 exact match
address setting removal ineffective
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 efb1bd3 ARTEMIS-2819 exact match address setting removal ineffective
new f8bd4a8 This closes #3199
efb1bd3 is described below
commit efb1bd3f9f422e8b6302b6e9a06eb231ef78d79a
Author: Keith Wall <kw...@apache.org>
AuthorDate: Tue Jun 23 18:06:06 2020 +0100
ARTEMIS-2819 exact match address setting removal ineffective
---
.../impl/HierarchicalObjectRepository.java | 1 +
.../management/ActiveMQServerControlTest.java | 199 +++++++++++++++++++++
2 files changed, 200 insertions(+)
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/HierarchicalObjectRepository.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/HierarchicalObjectRepository.java
index 06c26b8..0cf9708 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/HierarchicalObjectRepository.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/HierarchicalObjectRepository.java
@@ -304,6 +304,7 @@ public class HierarchicalObjectRepository<T> implements HierarchicalRepository<T
clearCache();
wildcardMatches.remove(modMatch);
} else {
+ cache.remove(modMatch);
exactMatches.remove(modMatch);
}
onChange();
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
index 0431c7d..c181e07 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
@@ -1310,6 +1310,205 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
}
@Test
+ public void testRemoveAddressSettingsEffective() throws Exception {
+ ActiveMQServerControl serverControl = createManagementControl();
+ String addr = "test";
+ String root = "#";
+
+ String DLA = "someDLA";
+ String expiryAddress = "someExpiry";
+ long expiryDelay = RandomUtil.randomPositiveLong();
+ long minExpiryDelay = 10000;
+ long maxExpiryDelay = 20000;
+ boolean lastValueQueue = true;
+ int deliveryAttempts = 1;
+ long maxSizeBytes = 20;
+ int pageSizeBytes = 10;
+ int pageMaxCacheSize = 7;
+ long redeliveryDelay = 4;
+ double redeliveryMultiplier = 1;
+ long maxRedeliveryDelay = 1000;
+ long redistributionDelay = 5;
+ boolean sendToDLAOnNoRoute = true;
+ String addressFullMessagePolicy = "PAGE";
+ long slowConsumerThreshold = 5;
+ long slowConsumerCheckPeriod = 10;
+ String slowConsumerPolicy = SlowConsumerPolicy.getType(RandomUtil.randomPositiveInt() % 2).toString();
+ boolean autoCreateJmsQueues = RandomUtil.randomBoolean();
+ boolean autoDeleteJmsQueues = RandomUtil.randomBoolean();
+ boolean autoCreateJmsTopics = RandomUtil.randomBoolean();
+ boolean autoDeleteJmsTopics = RandomUtil.randomBoolean();
+ boolean autoCreateQueues = RandomUtil.randomBoolean();
+ boolean autoDeleteQueues = RandomUtil.randomBoolean();
+ boolean autoCreateAddresses = RandomUtil.randomBoolean();
+ boolean autoDeleteAddresses = RandomUtil.randomBoolean();
+ String configDeleteQueues = DeletionPolicy.getType(RandomUtil.randomPositiveInt() % 2).toString();
+ String configDeleteAddresses = DeletionPolicy.getType(RandomUtil.randomPositiveInt() % 2).toString();
+ long maxSizeBytesRejectThreshold = RandomUtil.randomPositiveLong();
+ String defaultLastValueKey = RandomUtil.randomString();
+ boolean defaultNonDestructive = RandomUtil.randomBoolean();
+ boolean defaultExclusiveQueue = RandomUtil.randomBoolean();
+ boolean defaultGroupRebalance = RandomUtil.randomBoolean();
+ int defaultGroupBuckets = RandomUtil.randomPositiveInt();
+ String defaultGroupFirstKey = RandomUtil.randomString();
+ int defaultMaxConsumers = RandomUtil.randomPositiveInt();
+ boolean defaultPurgeOnNoConsumers = RandomUtil.randomBoolean();
+ int defaultConsumersBeforeDispatch = RandomUtil.randomPositiveInt();
+ long defaultDelayBeforeDispatch = RandomUtil.randomPositiveLong();
+ String defaultQueueRoutingType = RoutingType.getType((byte) (RandomUtil.randomPositiveInt() % 2)).toString();
+ String defaultAddressRoutingType = RoutingType.getType((byte) (RandomUtil.randomPositiveInt() % 2)).toString();
+ int defaultConsumerWindowSize = RandomUtil.randomPositiveInt();
+ long defaultRingSize = RandomUtil.randomPositiveLong();
+ boolean autoDeleteCreatedQueues = RandomUtil.randomBoolean();
+ long autoDeleteQueuesDelay = RandomUtil.randomPositiveLong();
+ long autoDeleteQueuesMessageCount = RandomUtil.randomPositiveLong();
+ long autoDeleteAddressesDelay = RandomUtil.randomPositiveLong();
+ double redeliveryCollisionAvoidanceFactor = RandomUtil.randomDouble();
+ long retroactiveMessageCount = RandomUtil.randomPositiveLong();
+ boolean autoCreateDeadLetterResources = RandomUtil.randomBoolean();
+ String deadLetterQueuePrefix = RandomUtil.randomString();
+ String deadLetterQueueSuffix = RandomUtil.randomString();
+ boolean autoCreateExpiryResources = RandomUtil.randomBoolean();
+ String expiryQueuePrefix = RandomUtil.randomString();
+ String expiryQueueSuffix = RandomUtil.randomString();
+ boolean enableMetrics = RandomUtil.randomBoolean();
+
+ serverControl.addAddressSettings(root,
+ DLA,
+ expiryAddress,
+ expiryDelay,
+ lastValueQueue,
+ deliveryAttempts,
+ maxSizeBytes,
+ pageSizeBytes,
+ pageMaxCacheSize,
+ redeliveryDelay,
+ redeliveryMultiplier,
+ maxRedeliveryDelay,
+ redistributionDelay,
+ sendToDLAOnNoRoute,
+ addressFullMessagePolicy,
+ slowConsumerThreshold,
+ slowConsumerCheckPeriod,
+ slowConsumerPolicy,
+ autoCreateJmsQueues,
+ autoDeleteJmsQueues,
+ autoCreateJmsTopics,
+ autoDeleteJmsTopics,
+ autoCreateQueues,
+ autoDeleteQueues,
+ autoCreateAddresses,
+ autoDeleteAddresses,
+ configDeleteQueues,
+ configDeleteAddresses,
+ maxSizeBytesRejectThreshold,
+ defaultLastValueKey,
+ defaultNonDestructive,
+ defaultExclusiveQueue,
+ defaultGroupRebalance,
+ defaultGroupBuckets,
+ defaultGroupFirstKey,
+ defaultMaxConsumers,
+ defaultPurgeOnNoConsumers,
+ defaultConsumersBeforeDispatch,
+ defaultDelayBeforeDispatch,
+ defaultQueueRoutingType,
+ defaultAddressRoutingType,
+ defaultConsumerWindowSize,
+ defaultRingSize,
+ autoDeleteCreatedQueues,
+ autoDeleteQueuesDelay,
+ autoDeleteQueuesMessageCount,
+ autoDeleteAddressesDelay,
+ redeliveryCollisionAvoidanceFactor,
+ retroactiveMessageCount,
+ autoCreateDeadLetterResources,
+ deadLetterQueuePrefix,
+ deadLetterQueueSuffix,
+ autoCreateExpiryResources,
+ expiryQueuePrefix,
+ expiryQueueSuffix,
+ minExpiryDelay,
+ maxExpiryDelay,
+ enableMetrics);
+
+ AddressSettingsInfo rootInfo = AddressSettingsInfo.from(serverControl.getAddressSettingsAsJSON(root));
+
+ // Give settings for addr different values to the root
+ final long addrMinExpiryDelay = rootInfo.getMinExpiryDelay() + 1;
+ final long addrMaxExpiryDelay = rootInfo.getMaxExpiryDelay() - 1;
+ serverControl.addAddressSettings(addr,
+ DLA,
+ expiryAddress,
+ expiryDelay,
+ lastValueQueue,
+ deliveryAttempts,
+ maxSizeBytes,
+ pageSizeBytes,
+ pageMaxCacheSize,
+ redeliveryDelay,
+ redeliveryMultiplier,
+ maxRedeliveryDelay,
+ redistributionDelay,
+ sendToDLAOnNoRoute,
+ addressFullMessagePolicy,
+ slowConsumerThreshold,
+ slowConsumerCheckPeriod,
+ slowConsumerPolicy,
+ autoCreateJmsQueues,
+ autoDeleteJmsQueues,
+ autoCreateJmsTopics,
+ autoDeleteJmsTopics,
+ autoCreateQueues,
+ autoDeleteQueues,
+ autoCreateAddresses,
+ autoDeleteAddresses,
+ configDeleteQueues,
+ configDeleteAddresses,
+ maxSizeBytesRejectThreshold,
+ defaultLastValueKey,
+ defaultNonDestructive,
+ defaultExclusiveQueue,
+ defaultGroupRebalance,
+ defaultGroupBuckets,
+ defaultGroupFirstKey,
+ defaultMaxConsumers,
+ defaultPurgeOnNoConsumers,
+ defaultConsumersBeforeDispatch,
+ defaultDelayBeforeDispatch,
+ defaultQueueRoutingType,
+ defaultAddressRoutingType,
+ defaultConsumerWindowSize,
+ defaultRingSize,
+ autoDeleteCreatedQueues,
+ autoDeleteQueuesDelay,
+ autoDeleteQueuesMessageCount,
+ autoDeleteAddressesDelay,
+ redeliveryCollisionAvoidanceFactor,
+ retroactiveMessageCount,
+ autoCreateDeadLetterResources,
+ deadLetterQueuePrefix,
+ deadLetterQueueSuffix,
+ autoCreateExpiryResources,
+ expiryQueuePrefix,
+ expiryQueueSuffix,
+ addrMinExpiryDelay,
+ addrMaxExpiryDelay,
+ enableMetrics);
+ AddressSettingsInfo addrInfo = AddressSettingsInfo.from(serverControl.getAddressSettingsAsJSON(addr));
+
+ assertEquals("settings for addr should carry update", addrMinExpiryDelay, addrInfo.getMinExpiryDelay());
+ assertEquals("settings for addr should carry update", addrMaxExpiryDelay, addrInfo.getMaxExpiryDelay());
+
+ serverControl.removeAddressSettings(addr);
+
+ AddressSettingsInfo rereadAddrInfo = AddressSettingsInfo.from(serverControl.getAddressSettingsAsJSON(addr));
+
+ assertEquals("settings for addr should have reverted to original value after removal", rootInfo.getMinExpiryDelay(), rereadAddrInfo.getMinExpiryDelay());
+ assertEquals("settings for addr should have reverted to original value after removal", rootInfo.getMaxExpiryDelay(), rereadAddrInfo.getMaxExpiryDelay());
+ }
+
+ @Test
public void testNullRouteNameOnDivert() throws Exception {
String address = RandomUtil.randomString();
String name = RandomUtil.randomString();