You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by mi...@apache.org on 2019/08/19 16:18:51 UTC

[activemq-artemis] branch master updated: ARTEMIS-2450 page-size-bytes should not be greater than Integer.MAX_VALUE

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

michaelpearce 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 a644c49  ARTEMIS-2450 page-size-bytes should not be greater than Integer.MAX_VALUE
     new b9dda34  This closes #2791
a644c49 is described below

commit a644c498da088cf9a5a9d1d4c13aa0acbdcbd2dd
Author: Wei Yang <wy...@gmail.com>
AuthorDate: Mon Aug 5 09:28:39 2019 +0800

    ARTEMIS-2450 page-size-bytes should not be greater than Integer.MAX_VALUE
---
 .../artemis/core/config/impl/Validators.java       | 24 ++++++++++++++++++
 .../deployers/impl/FileConfigurationParser.java    | 20 ++++++++-------
 .../activemq/artemis/core/paging/PagingStore.java  |  2 +-
 .../artemis/core/paging/impl/PagingStoreImpl.java  |  4 +--
 .../artemis/core/server/ActiveMQMessageBundle.java |  6 +++++
 .../artemis/core/server/impl/QueueImpl.java        |  2 +-
 .../core/settings/impl/AddressSettings.java        | 15 +++++------
 .../config/impl/FileConfigurationParserTest.java   | 29 ++++++++++++++++++++++
 .../core/config/impl/FileConfigurationTest.java    |  4 +--
 .../artemis/core/config/impl/ValidatorsTest.java   | 23 +++++++++++++++++
 .../artemis/tests/util/ActiveMQTestBase.java       |  6 ++---
 .../resources/ConfigurationTest-full-config.xml    |  4 +--
 ...rationTest-xinclude-config-address-settings.xml |  4 +--
 .../test/resources/InvalidConfigurationTest0.xml   |  4 +--
 .../test/resources/InvalidConfigurationTest1.xml   |  4 +--
 .../test/resources/InvalidConfigurationTest2.xml   |  4 +--
 .../test/resources/InvalidConfigurationTest3.xml   |  4 +--
 .../test/resources/InvalidConfigurationTest4.xml   |  4 +--
 .../test/resources/InvalidConfigurationTest5.xml   |  4 +--
 .../amqp/AmqpBridgeClusterRedistributionTest.java  |  2 +-
 .../ExclusiveDivertWithClusterTest.java            |  2 +-
 .../tests/integration/paging/GlobalPagingTest.java |  2 +-
 .../integration/plugin/OpenwirePluginTest.java     |  2 +-
 .../storage/PersistMultiThreadTest.java            |  2 +-
 24 files changed, 131 insertions(+), 46 deletions(-)

diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/Validators.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/Validators.java
index 7883013..a5d41ee 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/Validators.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/Validators.java
@@ -122,6 +122,30 @@ public final class Validators {
       }
    };
 
+   public static final Validator POSITIVE_INT = new Validator() {
+      @Override
+      public void validate(final String name, final Object value) {
+         Number val = (Number) value;
+         if (val.longValue() > 0 && val.longValue() <= Integer.MAX_VALUE) {
+            // OK
+         } else {
+            throw ActiveMQMessageBundle.BUNDLE.inRangeOfPositiveInt(name, val);
+         }
+      }
+   };
+
+   public static final Validator MINUS_ONE_OR_POSITIVE_INT = new Validator() {
+      @Override
+      public void validate(final String name, final Object value) {
+         Number val = (Number) value;
+         if (val.longValue() == -1 || (val.longValue() > 0 && val.longValue() <= Integer.MAX_VALUE)) {
+            // OK
+         } else {
+            throw ActiveMQMessageBundle.BUNDLE.inRangeOfPositiveIntThanMinusOne(name, val);
+         }
+      }
+   };
+
    public static final Validator THREAD_PRIORITY_RANGE = new Validator() {
       @Override
       public void validate(final String name, final Object value) {
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java
index e733465..8d016ef 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java
@@ -599,11 +599,11 @@ public final class FileConfigurationParser extends XMLConfigurationUtil {
 
       config.setJournalSyncNonTransactional(getBoolean(e, "journal-sync-non-transactional", config.isJournalSyncNonTransactional()));
 
-      config.setJournalFileSize(getTextBytesAsIntBytes(e, "journal-file-size", config.getJournalFileSize(), Validators.GT_ZERO));
+      config.setJournalFileSize(getTextBytesAsIntBytes(e, "journal-file-size", config.getJournalFileSize(), Validators.POSITIVE_INT));
 
       int journalBufferTimeout = getInteger(e, "journal-buffer-timeout", config.getJournalType() == JournalType.ASYNCIO ? ArtemisConstants.DEFAULT_JOURNAL_BUFFER_TIMEOUT_AIO : ArtemisConstants.DEFAULT_JOURNAL_BUFFER_TIMEOUT_NIO, Validators.GE_ZERO);
 
-      int journalBufferSize = getTextBytesAsIntBytes(e, "journal-buffer-size", config.getJournalType() == JournalType.ASYNCIO ? ArtemisConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO : ArtemisConstants.DEFAULT_JOURNAL_BUFFER_SIZE_NIO, Validators.GT_ZERO);
+      int journalBufferSize = getTextBytesAsIntBytes(e, "journal-buffer-size", config.getJournalType() == JournalType.ASYNCIO ? ArtemisConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO : ArtemisConstants.DEFAULT_JOURNAL_BUFFER_SIZE_NIO, Validators.POSITIVE_INT);
 
       int journalMaxIO = getInteger(e, "journal-max-io", config.getJournalType() == JournalType.ASYNCIO ? ActiveMQDefaultConfiguration.getDefaultJournalMaxIoAio() : ActiveMQDefaultConfiguration.getDefaultJournalMaxIoNio(), Validators.GT_ZERO);
 
@@ -1049,7 +1049,9 @@ public final class FileConfigurationParser extends XMLConfigurationUtil {
          } else if (MAX_SIZE_BYTES_NODE_NAME.equalsIgnoreCase(name)) {
             addressSettings.setMaxSizeBytes(ByteUtil.convertTextBytes(getTrimmedTextContent(child)));
          } else if (PAGE_SIZE_BYTES_NODE_NAME.equalsIgnoreCase(name)) {
-            addressSettings.setPageSizeBytes(ByteUtil.convertTextBytes(getTrimmedTextContent(child)));
+            long pageSizeLong = ByteUtil.convertTextBytes(getTrimmedTextContent(child));
+            Validators.POSITIVE_INT.validate(PAGE_SIZE_BYTES_NODE_NAME, pageSizeLong);
+            addressSettings.setPageSizeBytes((int) pageSizeLong);
          } else if (PAGE_MAX_CACHE_SIZE_NODE_NAME.equalsIgnoreCase(name)) {
             addressSettings.setPageCacheMaxSize(XMLUtil.parseInt(child));
          } else if (MESSAGE_COUNTER_HISTORY_DAY_LIMIT_NODE_NAME.equalsIgnoreCase(name)) {
@@ -1758,7 +1760,7 @@ public final class FileConfigurationParser extends XMLConfigurationUtil {
 
       double retryIntervalMultiplier = getDouble(e, "retry-interval-multiplier", ActiveMQDefaultConfiguration.getDefaultClusterRetryIntervalMultiplier(), Validators.GT_ZERO);
 
-      int minLargeMessageSize = getTextBytesAsIntBytes(e, "min-large-message-size", ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, Validators.GT_ZERO);
+      int minLargeMessageSize = getTextBytesAsIntBytes(e, "min-large-message-size", ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, Validators.POSITIVE_INT);
 
       long maxRetryInterval = getLong(e, "max-retry-interval", ActiveMQDefaultConfiguration.getDefaultClusterMaxRetryInterval(), Validators.GT_ZERO);
 
@@ -1766,9 +1768,9 @@ public final class FileConfigurationParser extends XMLConfigurationUtil {
 
       int reconnectAttempts = getInteger(e, "reconnect-attempts", ActiveMQDefaultConfiguration.getDefaultClusterReconnectAttempts(), Validators.MINUS_ONE_OR_GE_ZERO);
 
-      int confirmationWindowSize = getTextBytesAsIntBytes(e, "confirmation-window-size", ActiveMQDefaultConfiguration.getDefaultClusterConfirmationWindowSize(), Validators.GT_ZERO);
+      int confirmationWindowSize = getTextBytesAsIntBytes(e, "confirmation-window-size", ActiveMQDefaultConfiguration.getDefaultClusterConfirmationWindowSize(), Validators.POSITIVE_INT);
 
-      int producerWindowSize = getTextBytesAsIntBytes(e, "producer-window-size", ActiveMQDefaultConfiguration.getDefaultBridgeProducerWindowSize(), Validators.MINUS_ONE_OR_GT_ZERO);
+      int producerWindowSize = getTextBytesAsIntBytes(e, "producer-window-size", ActiveMQDefaultConfiguration.getDefaultBridgeProducerWindowSize(), Validators.MINUS_ONE_OR_POSITIVE_INT);
 
       long clusterNotificationInterval = getLong(e, "notification-interval", ActiveMQDefaultConfiguration.getDefaultClusterNotificationInterval(), Validators.GT_ZERO);
 
@@ -1841,9 +1843,9 @@ public final class FileConfigurationParser extends XMLConfigurationUtil {
       String transformerClassName = getString(brNode, "transformer-class-name", null, Validators.NO_CHECK);
 
       // Default bridge conf
-      int confirmationWindowSize = getTextBytesAsIntBytes(brNode, "confirmation-window-size", ActiveMQDefaultConfiguration.getDefaultBridgeConfirmationWindowSize(), Validators.GT_ZERO);
+      int confirmationWindowSize = getTextBytesAsIntBytes(brNode, "confirmation-window-size", ActiveMQDefaultConfiguration.getDefaultBridgeConfirmationWindowSize(), Validators.POSITIVE_INT);
 
-      int producerWindowSize = getTextBytesAsIntBytes(brNode, "producer-window-size", ActiveMQDefaultConfiguration.getDefaultBridgeConfirmationWindowSize(), Validators.GT_ZERO);
+      int producerWindowSize = getTextBytesAsIntBytes(brNode, "producer-window-size", ActiveMQDefaultConfiguration.getDefaultBridgeConfirmationWindowSize(), Validators.POSITIVE_INT);
 
       long retryInterval = getLong(brNode, "retry-interval", ActiveMQClient.DEFAULT_RETRY_INTERVAL, Validators.GT_ZERO);
 
@@ -1851,7 +1853,7 @@ public final class FileConfigurationParser extends XMLConfigurationUtil {
 
       long connectionTTL = getLong(brNode, "connection-ttl", ActiveMQClient.DEFAULT_CONNECTION_TTL, Validators.GT_ZERO);
 
-      int minLargeMessageSize = getTextBytesAsIntBytes(brNode, "min-large-message-size", ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, Validators.GT_ZERO);
+      int minLargeMessageSize = getTextBytesAsIntBytes(brNode, "min-large-message-size", ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, Validators.POSITIVE_INT);
 
       long maxRetryInterval = getLong(brNode, "max-retry-interval", ActiveMQClient.DEFAULT_MAX_RETRY_INTERVAL, Validators.GT_ZERO);
 
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStore.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStore.java
index a49e58d..275805e 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStore.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStore.java
@@ -61,7 +61,7 @@ public interface PagingStore extends ActiveMQComponent, RefCountMessageListener
 
    long getFirstPage();
 
-   long getPageSizeBytes();
+   int getPageSizeBytes();
 
    long getAddressSize();
 
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java
index 908e807..452be16 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java
@@ -91,7 +91,7 @@ public class PagingStoreImpl implements PagingStore {
 
    private long maxSize;
 
-   private long pageSize;
+   private int pageSize;
 
    private volatile AddressFullMessagePolicy addressFullMessagePolicy;
 
@@ -273,7 +273,7 @@ public class PagingStoreImpl implements PagingStore {
    }
 
    @Override
-   public long getPageSizeBytes() {
+   public int getPageSizeBytes() {
       return pageSize;
    }
 
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQMessageBundle.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQMessageBundle.java
index 930c236..c8eca81 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQMessageBundle.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQMessageBundle.java
@@ -473,4 +473,10 @@ public interface ActiveMQMessageBundle {
 
    @Message(id = 229225, value = "Validated User is not set", format = Message.Format.MESSAGE_FORMAT)
    ActiveMQIllegalStateException rejectEmptyValidatedUser();
+
+   @Message(id = 229226, value = "{0}  must be greater than 0 and less than or equal to Integer.MAX_VALUE (actual value: {1})", format = Message.Format.MESSAGE_FORMAT)
+   IllegalArgumentException inRangeOfPositiveInt(String name, Number val);
+
+   @Message(id = 229227, value = "{0}  must be equals to -1 or greater than 0 and less than or equal to Integer.MAX_VALUE (actual value: {1})", format = Message.Format.MESSAGE_FORMAT)
+   IllegalArgumentException inRangeOfPositiveIntThanMinusOne(String name, Number val);
 }
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
index d56e4db..1c133ef 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
@@ -2765,7 +2765,7 @@ public class QueueImpl extends CriticalComponentImpl implements Queue {
          }
       }
 
-      long maxSize = pageSubscription.getPagingStore().getPageSizeBytes();
+      int maxSize = pageSubscription.getPagingStore().getPageSizeBytes();
 
       long timeout = System.currentTimeMillis() + DELIVERY_TIMEOUT;
 
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 600839e..b864c6f 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
@@ -42,7 +42,7 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
 
    public static final AddressFullMessagePolicy DEFAULT_ADDRESS_FULL_MESSAGE_POLICY = AddressFullMessagePolicy.PAGE;
 
-   public static final long DEFAULT_PAGE_SIZE = 10 * 1024 * 1024;
+   public static final int DEFAULT_PAGE_SIZE = 10 * 1024 * 1024;
 
    public static final int DEFAULT_MAX_DELIVERY_ATTEMPTS = 10;
 
@@ -111,7 +111,7 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
 
    private Long maxSizeBytes = null;
 
-   private Long pageSizeBytes = null;
+   private Integer pageSizeBytes = null;
 
    private Integer pageMaxCache = null;
 
@@ -500,11 +500,11 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
       return this;
    }
 
-   public long getPageSizeBytes() {
+   public int getPageSizeBytes() {
       return pageSizeBytes != null ? pageSizeBytes : AddressSettings.DEFAULT_PAGE_SIZE;
    }
 
-   public AddressSettings setPageSizeBytes(final long pageSize) {
+   public AddressSettings setPageSizeBytes(final int pageSize) {
       pageSizeBytes = pageSize;
       return this;
    }
@@ -909,7 +909,8 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
 
       maxSizeBytes = BufferHelper.readNullableLong(buffer);
 
-      pageSizeBytes = BufferHelper.readNullableLong(buffer);
+      Long pageSizeLong = BufferHelper.readNullableLong(buffer);
+      pageSizeBytes = pageSizeLong == null ? null : pageSizeLong.intValue();
 
       pageMaxCache = BufferHelper.readNullableInteger(buffer);
 
@@ -1046,7 +1047,7 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
 
       return BufferHelper.sizeOfNullableSimpleString(addressFullMessagePolicy != null ? addressFullMessagePolicy.toString() : null) +
          BufferHelper.sizeOfNullableLong(maxSizeBytes) +
-         BufferHelper.sizeOfNullableLong(pageSizeBytes) +
+         BufferHelper.sizeOfNullableLong(Long.valueOf(pageSizeBytes)) +
          BufferHelper.sizeOfNullableInteger(pageMaxCache) +
          BufferHelper.sizeOfNullableBoolean(dropMessagesWhenFull) +
          BufferHelper.sizeOfNullableInteger(maxDeliveryAttempts) +
@@ -1097,7 +1098,7 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
 
       BufferHelper.writeNullableLong(buffer, maxSizeBytes);
 
-      BufferHelper.writeNullableLong(buffer, pageSizeBytes);
+      BufferHelper.writeNullableLong(buffer, Long.valueOf(pageSizeBytes));
 
       BufferHelper.writeNullableInteger(buffer, pageMaxCache);
 
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationParserTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationParserTest.java
index d9fc446..df1ee08 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationParserTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationParserTest.java
@@ -257,6 +257,35 @@ public class FileConfigurationParserTest extends ActiveMQTestBase {
       assertEquals("helloworld", bconfig.getPassword());
    }
 
+   @Test
+   public void testParsingOverflowPageSize() throws Exception {
+      testParsingOverFlow("<address-settings>" + "\n" + "<address-setting match=\"#\">" + "\n" + "<page-size-bytes>2147483648</page-size-bytes>\n" + "</address-setting>" + "\n" + "</address-settings>" + "\n");
+      testParsingOverFlow("<journal-file-size>2147483648</journal-file-size>");
+      testParsingOverFlow("<journal-buffer-size>2147483648</journal-buffer-size>");
+
+      testParsingOverFlow("<cluster-connections> \n" + "  <cluster-connection name=\"my-cluster\"> \n" + "    <connector-ref>netty</connector-ref>  \n" + "    <min-large-message-size>2147483648</min-large-message-size>\n" + "    <discovery-group-ref discovery-group-name=\"my-discovery-group\"/> \n" + "  </cluster-connection> \n" + "</cluster-connections>");
+      testParsingOverFlow("<cluster-connections> \n" + "  <cluster-connection name=\"my-cluster\"> \n" + "    <connector-ref>netty</connector-ref>  \n" + "    <confirmation-window-size>2147483648</confirmation-window-size>\n" + "    <discovery-group-ref discovery-group-name=\"my-discovery-group\"/> \n" + "  </cluster-connection> \n" + "</cluster-connections>");
+      testParsingOverFlow("<cluster-connections> \n" + "  <cluster-connection name=\"my-cluster\"> \n" + "    <connector-ref>netty</connector-ref>  \n" + "    <producer-window-size>2147483648</producer-window-size>\n" + "    <discovery-group-ref discovery-group-name=\"my-discovery-group\"/> \n" + "  </cluster-connection> \n" + "</cluster-connections>");
+
+      testParsingOverFlow("<bridges> \n" + "  <bridge name=\"price-forward-bridge\"> \n" + "    <queue-name>priceForwarding</queue-name>  \n" + "    <forwarding-address>newYorkPriceUpdates</forwarding-address>\n" + "    <min-large-message-size>2147483648</min-large-message-size>\n" + "    <static-connectors> \n" + "      <connector-ref>netty</connector-ref> \n" + "    </static-connectors> \n" + "  </bridge> \n" + "</bridges>");
+      testParsingOverFlow("<bridges> \n" + "  <bridge name=\"price-forward-bridge\"> \n" + "    <queue-name>priceForwarding</queue-name>  \n" + "    <forwarding-address>newYorkPriceUpdates</forwarding-address>\n" + "    <confirmation-window-size>2147483648</confirmation-window-size>\n" + "    <static-connectors> \n" + "      <connector-ref>netty</connector-ref> \n" + "    </static-connectors> \n" + "  </bridge> \n" + "</bridges>\n");
+      testParsingOverFlow("<bridges> \n" + "  <bridge name=\"price-forward-bridge\"> \n" + "    <queue-name>priceForwarding</queue-name>  \n" + "    <forwarding-address>newYorkPriceUpdates</forwarding-address>\n" + "    <producer-window-size>2147483648</producer-window-size>\n" + "    <static-connectors> \n" + "      <connector-ref>netty</connector-ref> \n" + "    </static-connectors> \n" + "  </bridge> \n" + "</bridges>\n");
+   }
+
+   private void testParsingOverFlow(String config) throws Exception {
+      FileConfigurationParser parser = new FileConfigurationParser();
+      String firstPartWithoutAddressSettings = firstPart.substring(0, firstPart.indexOf("<address-settings"));
+
+      String configStr = firstPartWithoutAddressSettings + config + lastPart;
+      ByteArrayInputStream input = new ByteArrayInputStream(configStr.getBytes(StandardCharsets.UTF_8));
+
+      try {
+         Configuration configuration = parser.parseMainConfig(input);
+         fail("parsing should have failed bcs of overflow page size");
+      } catch (java.lang.IllegalArgumentException e) {
+      }
+   }
+
    private static String bridgePart = "<bridges>\n" +
            "            <bridge name=\"my-bridge\">\n" +
            "               <queue-name>sausage-factory</queue-name>\n" +
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java
index 98711f7..18469c5 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java
@@ -344,7 +344,7 @@ public class FileConfigurationTest extends ConfigurationImplTest {
       assertEquals("a1.2", conf.getAddressesSettings().get("a1").getExpiryAddress().toString());
       assertEquals(1, conf.getAddressesSettings().get("a1").getRedeliveryDelay());
       assertEquals(856686592L, conf.getAddressesSettings().get("a1").getMaxSizeBytes());
-      assertEquals(81738173872337L, conf.getAddressesSettings().get("a1").getPageSizeBytes());
+      assertEquals(817381738L, conf.getAddressesSettings().get("a1").getPageSizeBytes());
       assertEquals(10, conf.getAddressesSettings().get("a1").getPageCacheMaxSize());
       assertEquals(4, conf.getAddressesSettings().get("a1").getMessageCounterHistoryDayLimit());
       assertEquals(10, conf.getAddressesSettings().get("a1").getSlowConsumerThreshold());
@@ -365,7 +365,7 @@ public class FileConfigurationTest extends ConfigurationImplTest {
       assertEquals("a2.2", conf.getAddressesSettings().get("a2").getExpiryAddress().toString());
       assertEquals(5, conf.getAddressesSettings().get("a2").getRedeliveryDelay());
       assertEquals(932489234928324L, conf.getAddressesSettings().get("a2").getMaxSizeBytes());
-      assertEquals(7126716262626L, conf.getAddressesSettings().get("a2").getPageSizeBytes());
+      assertEquals(712671626L, conf.getAddressesSettings().get("a2").getPageSizeBytes());
       assertEquals(20, conf.getAddressesSettings().get("a2").getPageCacheMaxSize());
       assertEquals(8, conf.getAddressesSettings().get("a2").getMessageCounterHistoryDayLimit());
       assertEquals(20, conf.getAddressesSettings().get("a2").getSlowConsumerThreshold());
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ValidatorsTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ValidatorsTest.java
index 354827a..1d575e4 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ValidatorsTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ValidatorsTest.java
@@ -120,6 +120,29 @@ public class ValidatorsTest extends Assert {
       ValidatorsTest.failure(Validators.PERCENTAGE_OR_MINUS_ONE, null);
    }
 
+   @Test
+   public void testPOSITIVE_INT() {
+      ValidatorsTest.failure(Validators.POSITIVE_INT, -1);
+      ValidatorsTest.failure(Validators.POSITIVE_INT, 0);
+      ValidatorsTest.failure(Validators.POSITIVE_INT, 0.1);
+      ValidatorsTest.success(Validators.POSITIVE_INT, 1);
+
+      ValidatorsTest.success(Validators.POSITIVE_INT, Integer.MAX_VALUE);
+      ValidatorsTest.failure(Validators.POSITIVE_INT, Integer.MAX_VALUE + 1);
+   }
+
+   @Test
+   public void testMINUS_ONE_OR_POSITIVE_INT() {
+      ValidatorsTest.failure(Validators.MINUS_ONE_OR_POSITIVE_INT, -2);
+      ValidatorsTest.success(Validators.MINUS_ONE_OR_POSITIVE_INT, -1);
+      ValidatorsTest.failure(Validators.MINUS_ONE_OR_POSITIVE_INT, 0);
+      ValidatorsTest.failure(Validators.MINUS_ONE_OR_POSITIVE_INT, 0.1);
+      ValidatorsTest.success(Validators.MINUS_ONE_OR_POSITIVE_INT, 1);
+
+      ValidatorsTest.success(Validators.MINUS_ONE_OR_POSITIVE_INT, Integer.MAX_VALUE);
+      ValidatorsTest.failure(Validators.MINUS_ONE_OR_POSITIVE_INT, Integer.MAX_VALUE + 1);
+   }
+
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java b/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
index a318e98..458da17 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
@@ -1399,14 +1399,14 @@ public abstract class ActiveMQTestBase extends Assert {
 
    protected final ActiveMQServer createServer(final boolean realFiles,
                                                final Configuration configuration,
-                                               final long pageSize,
+                                               final int pageSize,
                                                final long maxAddressSize) {
       return createServer(realFiles, configuration, pageSize, maxAddressSize, (Map<String, AddressSettings>) null);
    }
 
    protected ActiveMQServer createServer(final boolean realFiles,
                                          final Configuration configuration,
-                                         final long pageSize,
+                                         final int pageSize,
                                          final long maxAddressSize,
                                          final Map<String, AddressSettings> settings) {
       ActiveMQServer server = addServer(ActiveMQServers.newActiveMQServer(configuration, realFiles));
@@ -1426,7 +1426,7 @@ public abstract class ActiveMQTestBase extends Assert {
 
    protected final ActiveMQServer createServer(final boolean realFiles,
                                                final Configuration configuration,
-                                               final long pageSize,
+                                               final int pageSize,
                                                final long maxAddressSize,
                                                final Map<String, AddressSettings> settings,
                                                StoreConfiguration.StoreType storeType) {
diff --git a/artemis-server/src/test/resources/ConfigurationTest-full-config.xml b/artemis-server/src/test/resources/ConfigurationTest-full-config.xml
index c97bcbf..8b96e91 100644
--- a/artemis-server/src/test/resources/ConfigurationTest-full-config.xml
+++ b/artemis-server/src/test/resources/ConfigurationTest-full-config.xml
@@ -384,7 +384,7 @@
             <expiry-address>a1.2</expiry-address>
             <redelivery-delay>1</redelivery-delay>
             <max-size-bytes>817M</max-size-bytes>
-            <page-size-bytes>81738173872337</page-size-bytes>
+            <page-size-bytes>817381738</page-size-bytes>
             <page-max-cache-size>10</page-max-cache-size>
             <message-counter-history-day-limit>4</message-counter-history-day-limit>
             <slow-consumer-threshold>10</slow-consumer-threshold>
@@ -408,7 +408,7 @@
             <expiry-address>a2.2</expiry-address>
             <redelivery-delay>5</redelivery-delay>
             <max-size-bytes>932489234928324</max-size-bytes>
-            <page-size-bytes>7126716262626</page-size-bytes>
+            <page-size-bytes>712671626</page-size-bytes>
             <page-max-cache-size>20</page-max-cache-size>
             <message-counter-history-day-limit>8</message-counter-history-day-limit>
             <slow-consumer-threshold>20</slow-consumer-threshold>
diff --git a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-address-settings.xml b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-address-settings.xml
index 0d5784d..b060302 100644
--- a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-address-settings.xml
+++ b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-address-settings.xml
@@ -20,7 +20,7 @@
       <expiry-address>a1.2</expiry-address>
       <redelivery-delay>1</redelivery-delay>
       <max-size-bytes>817M</max-size-bytes>
-      <page-size-bytes>81738173872337</page-size-bytes>
+      <page-size-bytes>817381738</page-size-bytes>
       <page-max-cache-size>10</page-max-cache-size>
       <message-counter-history-day-limit>4</message-counter-history-day-limit>
       <slow-consumer-threshold>10</slow-consumer-threshold>
@@ -44,7 +44,7 @@
       <expiry-address>a2.2</expiry-address>
       <redelivery-delay>5</redelivery-delay>
       <max-size-bytes>932489234928324</max-size-bytes>
-      <page-size-bytes>7126716262626</page-size-bytes>
+      <page-size-bytes>712671626</page-size-bytes>
       <page-max-cache-size>20</page-max-cache-size>
       <message-counter-history-day-limit>8</message-counter-history-day-limit>
       <slow-consumer-threshold>20</slow-consumer-threshold>
diff --git a/artemis-server/src/test/resources/InvalidConfigurationTest0.xml b/artemis-server/src/test/resources/InvalidConfigurationTest0.xml
index 9eabc9e..ca08c84 100644
--- a/artemis-server/src/test/resources/InvalidConfigurationTest0.xml
+++ b/artemis-server/src/test/resources/InvalidConfigurationTest0.xml
@@ -213,7 +213,7 @@
             <expiry-address>a1.2</expiry-address>
             <redelivery-delay>1</redelivery-delay>
             <max-size-bytes>81781728121878</max-size-bytes>
-            <page-size-bytes>81738173872337</page-size-bytes>
+            <page-size-bytes>817381738</page-size-bytes>
             <page-max-cache-size>10</page-max-cache-size>
             <message-counter-history-day-limit>4</message-counter-history-day-limit>
          </address-setting>
@@ -222,7 +222,7 @@
             <expiry-address>a2.2</expiry-address>
             <redelivery-delay>5</redelivery-delay>
             <max-size-bytes>932489234928324</max-size-bytes>
-            <page-size-bytes>7126716262626</page-size-bytes>
+            <page-size-bytes>712671626</page-size-bytes>
             <page-max-cache-size>20</page-max-cache-size>
             <message-counter-history-day-limit>AA</message-counter-history-day-limit>
          </address-setting>
diff --git a/artemis-server/src/test/resources/InvalidConfigurationTest1.xml b/artemis-server/src/test/resources/InvalidConfigurationTest1.xml
index 7080f37..93e6e9b 100644
--- a/artemis-server/src/test/resources/InvalidConfigurationTest1.xml
+++ b/artemis-server/src/test/resources/InvalidConfigurationTest1.xml
@@ -213,7 +213,7 @@
             <expiry-address>a1.2</expiry-address>
             <redelivery-delay>1</redelivery-delay>
             <max-size-bytes>81781728121878</max-size-bytes>
-            <page-size-bytes>81738173872337</page-size-bytes>
+            <page-size-bytes>817381738</page-size-bytes>
             <page-max-cache-size>10</page-max-cache-size>
             <message-counter-history-day-limit>4</message-counter-history-day-limit>
          </address-setting>
@@ -222,7 +222,7 @@
             <expiry-address>a2.2</expiry-address>
             <redelivery-delay>5</redelivery-delay>
             <max-size-bytes>932489234928324</max-size-bytes>
-            <page-size-bytes>7126716262626</page-size-bytes>
+            <page-size-bytes>712671626</page-size-bytes>
             <page-max-cache-size>20</page-max-cache-size>
             <message-counter-history-day-limit>8</message-counter-history-day-limit>
          </address-setting>
diff --git a/artemis-server/src/test/resources/InvalidConfigurationTest2.xml b/artemis-server/src/test/resources/InvalidConfigurationTest2.xml
index 3d3ae98..bdd50e9 100644
--- a/artemis-server/src/test/resources/InvalidConfigurationTest2.xml
+++ b/artemis-server/src/test/resources/InvalidConfigurationTest2.xml
@@ -213,7 +213,7 @@
             <expiry-address>a1.2</expiry-address>
             <redelivery-delay>1</redelivery-delay>
             <max-size-bytes>81781728121878</max-size-bytes>
-            <page-size-bytes>81738173872337</page-size-bytes>
+            <page-size-bytes>817381738</page-size-bytes>
             <page-max-cache-size>10</page-max-cache-size>
             <message-counter-history-day-limit>4</message-counter-history-day-limit>
          </address-setting>
@@ -222,7 +222,7 @@
             <expiry-address>a2.2</expiry-address>
             <redelivery-delay>5</redelivery-delay>
             <max-size-bytes>932489234928324</max-size-bytes>
-            <page-size-bytes>7126716262626</page-size-bytes>
+            <page-size-bytes>712671626</page-size-bytes>
             <page-max-cache-size>20</page-max-cache-size>
             <message-counter-history-day-limit>8</message-counter-history-day-limit>
          </address-setting>
diff --git a/artemis-server/src/test/resources/InvalidConfigurationTest3.xml b/artemis-server/src/test/resources/InvalidConfigurationTest3.xml
index 7b3eb9b..b52d2e5 100644
--- a/artemis-server/src/test/resources/InvalidConfigurationTest3.xml
+++ b/artemis-server/src/test/resources/InvalidConfigurationTest3.xml
@@ -214,7 +214,7 @@
             <expiry-address>a1.2</expiry-address>
             <redelivery-delay>1</redelivery-delay>
             <max-size-bytes>81781728121878</max-size-bytes>
-            <page-size-bytes>81738173872337</page-size-bytes>
+            <page-size-bytes>817381738</page-size-bytes>
             <page-max-cache-size>10</page-max-cache-size>
             <message-counter-history-day-limit>4</message-counter-history-day-limit>
          </address-setting>
@@ -223,7 +223,7 @@
             <expiry-address>a2.2</expiry-address>
             <redelivery-delay>5</redelivery-delay>
             <max-size-bytes>932489234928324</max-size-bytes>
-            <page-size-bytes>7126716262626</page-size-bytes>
+            <page-size-bytes>712671626</page-size-bytes>
             <page-max-cache-size>20</page-max-cache-size>
             <message-counter-history-day-limit>8</message-counter-history-day-limit>
          </address-setting>
diff --git a/artemis-server/src/test/resources/InvalidConfigurationTest4.xml b/artemis-server/src/test/resources/InvalidConfigurationTest4.xml
index e6feced..ae98081 100644
--- a/artemis-server/src/test/resources/InvalidConfigurationTest4.xml
+++ b/artemis-server/src/test/resources/InvalidConfigurationTest4.xml
@@ -212,7 +212,7 @@
             <expiry-address>a1.2</expiry-address>
             <redelivery-delay>1</redelivery-delay>
             <max-size-bytes>81781728121878</max-size-bytes>
-            <page-size-bytes>81738173872337</page-size-bytes>
+            <page-size-bytes>817381738</page-size-bytes>
             <page-max-cache-size>10</page-max-cache-size>
             <message-counter-history-day-limit>4</message-counter-history-day-limit>
          </address-setting>
@@ -221,7 +221,7 @@
             <expiry-address>a2.2</expiry-address>
             <redelivery-delay>5</redelivery-delay>
             <max-size-bytes>932489234928324</max-size-bytes>
-            <page-size-bytes>7126716262626</page-size-bytes>
+            <page-size-bytes>712671626</page-size-bytes>
             <page-max-cache-size>20</page-max-cache-size>
             <message-counter-history-day-limit>8</message-counter-history-day-limit>
          </address-setting>
diff --git a/artemis-server/src/test/resources/InvalidConfigurationTest5.xml b/artemis-server/src/test/resources/InvalidConfigurationTest5.xml
index 1b4dc9c..80e40f3 100644
--- a/artemis-server/src/test/resources/InvalidConfigurationTest5.xml
+++ b/artemis-server/src/test/resources/InvalidConfigurationTest5.xml
@@ -215,7 +215,7 @@
             <expiry-address>a1.2</expiry-address>
             <redelivery-delay>1</redelivery-delay>
             <max-size-bytes>81781728121878</max-size-bytes>
-            <page-size-bytes>81738173872337</page-size-bytes>
+            <page-size-bytes>817381738</page-size-bytes>
             <page-max-cache-size>10</page-max-cache-size>
             <message-counter-history-day-limit>4</message-counter-history-day-limit>
          </address-setting>
@@ -224,7 +224,7 @@
             <expiry-address>a2.2</expiry-address>
             <redelivery-delay>5</redelivery-delay>
             <max-size-bytes>932489234928324</max-size-bytes>
-            <page-size-bytes>7126716262626</page-size-bytes>
+            <page-size-bytes>712671626</page-size-bytes>
             <page-max-cache-size>20</page-max-cache-size>
             <message-counter-history-day-limit>8</message-counter-history-day-limit>
          </address-setting>
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpBridgeClusterRedistributionTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpBridgeClusterRedistributionTest.java
index 3365723..56b9c37 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpBridgeClusterRedistributionTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpBridgeClusterRedistributionTest.java
@@ -83,7 +83,7 @@ public class AmqpBridgeClusterRedistributionTest extends AmqpClientTestSupport {
    @Override
    protected ActiveMQServer createServer(final boolean realFiles,
                                          final Configuration configuration,
-                                         final long pageSize,
+                                         final int pageSize,
                                          final long maxAddressSize,
                                          final Map<String, AddressSettings> settings) {
       ActiveMQServer server = addServer(ActiveMQServers.newActiveMQServer(configuration, realFiles));
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/ExclusiveDivertWithClusterTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/ExclusiveDivertWithClusterTest.java
index f033128..095b017 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/ExclusiveDivertWithClusterTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/ExclusiveDivertWithClusterTest.java
@@ -45,7 +45,7 @@ public class ExclusiveDivertWithClusterTest extends ClusterTestBase {
    @Override
    protected ActiveMQServer createServer(final boolean realFiles,
                                          final Configuration configuration,
-                                         final long pageSize,
+                                         final int pageSize,
                                          final long maxAddressSize,
                                          final Map<String, AddressSettings> settings) {
       DivertConfiguration divertConf = new DivertConfiguration().setName("notifications-divert").setAddress("*.Provider.*.Agent.*.Status").setForwardingAddress("Notifications").setExclusive(true);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/GlobalPagingTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/GlobalPagingTest.java
index 870bb14..698d392 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/GlobalPagingTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/GlobalPagingTest.java
@@ -70,7 +70,7 @@ public class GlobalPagingTest extends PagingTest {
    @Override
    protected ActiveMQServer createServer(final boolean realFiles,
                                          final Configuration configuration,
-                                         final long pageSize,
+                                         final int pageSize,
                                          final long maxAddressSize,
                                          final Map<String, AddressSettings> settings) {
       ActiveMQServer server = addServer(ActiveMQServers.newActiveMQServer(configuration, realFiles));
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/OpenwirePluginTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/OpenwirePluginTest.java
index d0206a7..425bac8 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/OpenwirePluginTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/OpenwirePluginTest.java
@@ -75,7 +75,7 @@ public class OpenwirePluginTest extends BasicOpenWireTest {
    private final MethodCalledVerifier verifier = new MethodCalledVerifier(methodCalls);
 
    @Override
-   protected ActiveMQServer createServer(boolean realFiles, Configuration configuration, long pageSize,
+   protected ActiveMQServer createServer(boolean realFiles, Configuration configuration, int pageSize,
                                          long maxAddressSize, Map<String, AddressSettings> settings) {
       ActiveMQServer server = super.createServer(realFiles, configuration, pageSize, maxAddressSize, settings);
       server.registerBrokerPlugin(verifier);
diff --git a/tests/performance-tests/src/test/java/org/apache/activemq/artemis/tests/performance/storage/PersistMultiThreadTest.java b/tests/performance-tests/src/test/java/org/apache/activemq/artemis/tests/performance/storage/PersistMultiThreadTest.java
index 420c278..30aa4c3 100644
--- a/tests/performance-tests/src/test/java/org/apache/activemq/artemis/tests/performance/storage/PersistMultiThreadTest.java
+++ b/tests/performance-tests/src/test/java/org/apache/activemq/artemis/tests/performance/storage/PersistMultiThreadTest.java
@@ -303,7 +303,7 @@ public class PersistMultiThreadTest extends ActiveMQTestBase {
       }
 
       @Override
-      public long getPageSizeBytes() {
+      public int getPageSizeBytes() {
          return 0;
       }