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

Reply via email to