This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/main by this push:
new 951c506 ARTEMIS-3637 config-delete-diverts not applied properly
951c506 is described below
commit 951c506481d722c927b29faca7efa7ce91989156
Author: Justin Bertram <[email protected]>
AuthorDate: Tue Jan 11 20:32:13 2022 -0600
ARTEMIS-3637 config-delete-diverts not applied properly
The address-setting config-delete-diverts is not being applied correctly
hierarchically because it's not included in the merge() method. It is
also not being persisted to disk either. This commit fixes both issues.
---
.../core/settings/impl/AddressSettings.java | 17 +++++++++++++++
.../artemis/core/settings/AddressSettingsTest.java | 3 +++
.../AddressSettingsConfigurationStorageTest.java | 24 ++++++++++++++++++++++
3 files changed, 44 insertions(+)
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java
index 79cece3..fe21c2f 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java
@@ -318,6 +318,7 @@ public class AddressSettings implements
Mergeable<AddressSettings>, Serializable
this.autoDeleteAddresses = other.autoDeleteAddresses;
this.autoDeleteAddressesDelay = other.autoDeleteAddressesDelay;
this.configDeleteAddresses = other.configDeleteAddresses;
+ this.configDeleteDiverts = other.configDeleteDiverts;
this.managementBrowsePageSize = other.managementBrowsePageSize;
this.queuePrefetch = other.queuePrefetch;
this.maxSizeBytesRejectThreshold = other.maxSizeBytesRejectThreshold;
@@ -1084,6 +1085,9 @@ public class AddressSettings implements
Mergeable<AddressSettings>, Serializable
if (configDeleteAddresses == null) {
configDeleteAddresses = merged.configDeleteAddresses;
}
+ if (configDeleteDiverts == null) {
+ configDeleteDiverts = merged.configDeleteDiverts;
+ }
if (managementBrowsePageSize == null) {
managementBrowsePageSize = merged.managementBrowsePageSize;
}
@@ -1398,6 +1402,16 @@ public class AddressSettings implements
Mergeable<AddressSettings>, Serializable
if (buffer.readableBytes() > 0) {
enableIngressTimestamp = BufferHelper.readNullableBoolean(buffer);
}
+
+ if (buffer.readableBytes() > 0) {
+ policyStr = tryCompatible ? null : buffer.readNullableSimpleString();
+
+ if (policyStr != null) {
+ configDeleteDiverts = DeletionPolicy.valueOf(policyStr.toString());
+ } else {
+ configDeleteDiverts = null;
+ }
+ }
}
@Override
@@ -1433,6 +1447,7 @@ public class AddressSettings implements
Mergeable<AddressSettings>, Serializable
BufferHelper.sizeOfNullableBoolean(autoDeleteQueues) +
BufferHelper.sizeOfNullableSimpleString(configDeleteQueues != null ?
configDeleteQueues.toString() : null) +
BufferHelper.sizeOfNullableBoolean(autoCreateAddresses) +
BufferHelper.sizeOfNullableBoolean(autoDeleteAddresses) +
BufferHelper.sizeOfNullableSimpleString(configDeleteAddresses != null ?
configDeleteAddresses.toString() : null) +
+ BufferHelper.sizeOfNullableSimpleString(configDeleteDiverts != null ?
configDeleteDiverts.toString() : null) +
BufferHelper.sizeOfNullableInteger(managementBrowsePageSize) +
BufferHelper.sizeOfNullableLong(maxSizeBytesRejectThreshold) +
BufferHelper.sizeOfNullableInteger(defaultMaxConsumers) +
@@ -1596,6 +1611,8 @@ public class AddressSettings implements
Mergeable<AddressSettings>, Serializable
BufferHelper.writeNullableInteger(buffer,
slowConsumerThresholdMeasurementUnit == null ? null :
slowConsumerThresholdMeasurementUnit.getValue());
BufferHelper.writeNullableBoolean(buffer, enableIngressTimestamp);
+
+ buffer.writeNullableSimpleString(configDeleteDiverts != null ? new
SimpleString(configDeleteDiverts.toString()) : null);
}
/* (non-Javadoc)
diff --git
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/settings/AddressSettingsTest.java
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/settings/AddressSettingsTest.java
index aca8695..aa67e3e 100644
---
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/settings/AddressSettingsTest.java
+++
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/settings/AddressSettingsTest.java
@@ -20,6 +20,7 @@ import
org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
+import org.apache.activemq.artemis.core.settings.impl.DeletionPolicy;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.junit.Assert;
import org.junit.Test;
@@ -68,6 +69,7 @@ public class AddressSettingsTest extends ActiveMQTestBase {
addressSettingsToMerge.setRedeliveryDelay(1003);
addressSettingsToMerge.setPageSizeBytes(1004);
addressSettingsToMerge.setMaxSizeBytesRejectThreshold(10 * 1024);
+ addressSettingsToMerge.setConfigDeleteDiverts(DeletionPolicy.FORCE);
addressSettings.merge(addressSettingsToMerge);
Assert.assertEquals(addressSettings.getDeadLetterAddress(), DLQ);
@@ -79,6 +81,7 @@ public class AddressSettingsTest extends ActiveMQTestBase {
Assert.assertEquals(addressSettings.getPageSizeBytes(), 1004);
Assert.assertEquals(AddressFullMessagePolicy.DROP,
addressSettings.getAddressFullMessagePolicy());
Assert.assertEquals(addressSettings.getMaxSizeBytesRejectThreshold(), 10
* 1024);
+ Assert.assertEquals(DeletionPolicy.FORCE,
addressSettings.getConfigDeleteDiverts());
}
@Test
diff --git
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/AddressSettingsConfigurationStorageTest.java
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/AddressSettingsConfigurationStorageTest.java
index c7d1920..4e10642 100644
---
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/AddressSettingsConfigurationStorageTest.java
+++
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/AddressSettingsConfigurationStorageTest.java
@@ -26,6 +26,7 @@ import
org.apache.activemq.artemis.core.persistence.StorageManager;
import
org.apache.activemq.artemis.core.persistence.config.PersistedAddressSetting;
import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
+import org.apache.activemq.artemis.core.settings.impl.DeletionPolicy;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -88,6 +89,29 @@ public class AddressSettingsConfigurationStorageTest extends
StorageManagerTestB
}
+ @Test
+ public void testStoreConfigDeleteSettings() throws Exception {
+ createStorage();
+
+ AddressSettings setting = new AddressSettings()
+ .setConfigDeleteDiverts(DeletionPolicy.FORCE)
+ .setConfigDeleteAddresses(DeletionPolicy.FORCE)
+ .setConfigDeleteQueues(DeletionPolicy.FORCE);
+
+ addAddress(journal, "a1", setting);
+
+ journal.stop();
+
+ createStorage();
+
+ checkAddresses(journal);
+
+ journal.stop();
+
+ journal = null;
+
+ }
+
/**
* @param journal1
* @throws Exception