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 2020/07/24 17:24:07 UTC

[activemq-artemis] branch master updated: ARTEMIS-2853 page-max-concurrent-io cannot be disabled

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


The following commit(s) were added to refs/heads/master by this push:
     new f2d0d30  ARTEMIS-2853 page-max-concurrent-io cannot be disabled
     new f46527b  This closes #3224
f2d0d30 is described below

commit f2d0d300f5d317bd1c41c6efe92b8834c8111b66
Author: franz1981 <ni...@gmail.com>
AuthorDate: Fri Jul 24 13:04:12 2020 +0200

    ARTEMIS-2853 page-max-concurrent-io cannot be disabled
---
 .../persistence/impl/journal/JournalStorageManager.java    |  3 ++-
 .../impl/journal/JournalStorageManagerTest.java            | 14 ++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/JournalStorageManager.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/JournalStorageManager.java
index 94a2dc0..8d6e373 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/JournalStorageManager.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/JournalStorageManager.java
@@ -176,7 +176,8 @@ public class JournalStorageManager extends AbstractJournalStorageManager {
 
       largeMessagesFactory = new NIOSequentialFileFactory(config.getLargeMessagesLocation(), false, criticalErrorListener, 1);
 
-      if (config.getPageMaxConcurrentIO() != 1) {
+      // it doesn't make sense to limit paging concurrency < 0
+      if (config.getPageMaxConcurrentIO() >= 0) {
          pageMaxConcurrentIO = new Semaphore(config.getPageMaxConcurrentIO());
       } else {
          pageMaxConcurrentIO = null;
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/persistence/impl/journal/JournalStorageManagerTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/persistence/impl/journal/JournalStorageManagerTest.java
index a058094..3f65e88 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/persistence/impl/journal/JournalStorageManagerTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/persistence/impl/journal/JournalStorageManagerTest.java
@@ -91,6 +91,20 @@ public class JournalStorageManagerTest extends ActiveMQTestBase {
       testExecutor.shutdownNow();
    }
 
+   @Test
+   public void testDisablePageConcurrentMax() throws Exception {
+      if (journalType == JournalType.ASYNCIO) {
+         assumeTrue("AIO is not supported on this platform", AIOSequentialFileFactory.isSupported());
+      }
+      final Configuration configuration = createDefaultInVMConfig().setJournalType(journalType);
+      configuration.setPageMaxConcurrentIO(-1);
+      final ExecutorFactory executorFactory = new OrderedExecutorFactory(executor);
+      final ExecutorFactory ioExecutorFactory = new OrderedExecutorFactory(ioExecutor);
+      final JournalStorageManager manager = new JournalStorageManager(configuration, null, executorFactory, null, ioExecutorFactory);
+      // if -1 is being set it means that we should first call afterPageRead to acuire the permit to read a page
+      Assert.assertTrue(manager.beforePageRead(0, TimeUnit.NANOSECONDS));
+   }
+
    /**
     * Test of fixJournalFileSize method, of class JournalStorageManager.
     */