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 2022/05/23 18:42:15 UTC

[activemq-artemis] 03/07: fixing

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

clebertsuconic pushed a commit to branch new-paging
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git

commit acc13eff277a4ba9de8aa18743a37f17397e944a
Author: Clebert Suconic <cl...@apache.org>
AuthorDate: Wed May 18 21:53:48 2022 -0400

    fixing
---
 .../core/paging/cursor/impl/PageCursorProviderImpl.java      | 11 +++--------
 .../core/paging/cursor/impl/PageSubscriptionImpl.java        |  4 +---
 .../activemq/artemis/core/paging/impl/PagingStoreImpl.java   | 12 +++++++++---
 tests/config/logging.properties                              |  6 ++++--
 .../artemis/tests/integration/paging/PagingTest.java         | 11 ++++++++++-
 5 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/cursor/impl/PageCursorProviderImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/cursor/impl/PageCursorProviderImpl.java
index e4948afd8f..de9efb5ab2 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/cursor/impl/PageCursorProviderImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/cursor/impl/PageCursorProviderImpl.java
@@ -173,10 +173,7 @@ public class PageCursorProviderImpl implements PageCursorProvider {
 
    @Override
    public void scheduleCleanup() {
-      new Exception("Scheduling cleanup").printStackTrace(System.out);
-
       if (!cleanupEnabled || scheduledCleanup.intValue() > 2) {
-         new Exception("cleanup enabled = " + cleanupEnabled + " and scheduledCleanup = " + scheduledCleanup).printStackTrace(System.out);
          // Scheduled cleanup was already scheduled before.. never mind!
          // or we have cleanup disabled
          return;
@@ -269,10 +266,9 @@ public class PageCursorProviderImpl implements PageCursorProvider {
                   return;
                }
 
-               /*if (pagingStore.getNumberOfPages() == 0) {
-                  logger.trace("number of pages = 0 on pagingStore");
+               if (pagingStore.getNumberOfPages() == 0) {
                   return;
-               } */
+               }
 
                ArrayList<PageSubscription> cursorList = cloneSubscriptions();
 
@@ -293,10 +289,9 @@ public class PageCursorProviderImpl implements PageCursorProvider {
                }
 
                if (pagingStore.getNumberOfPages() == 0 || pagingStore.getNumberOfPages() == 1 && pagingStore.getCurrentPage().getNumberOfMessages() == 0) {
-                  new Exception("NumberOfPages = 0").printStackTrace(System.out);
+                  logger.tracef("StopPaging being called on %s", pagingStore);
                   pagingStore.stopPaging();
                } else {
-                  System.out.println("Could not stop paging because " + pagingStore.getNumberOfPages() + " and current messages = " + pagingStore.getCurrentPage().getNumberOfMessages());
                   if (logger.isTraceEnabled()) {
                      logger.trace("Couldn't cleanup page on address " + this.pagingStore.getAddress() + " as numberOfPages == " + pagingStore.getNumberOfPages() + " and currentPage.numberOfMessages = " + pagingStore.getCurrentPage().getNumberOfMessages());
                   }
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/cursor/impl/PageSubscriptionImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/cursor/impl/PageSubscriptionImpl.java
index 648fe7a695..cb2aee8a3c 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/cursor/impl/PageSubscriptionImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/cursor/impl/PageSubscriptionImpl.java
@@ -1107,9 +1107,7 @@ public final class PageSubscriptionImpl implements PageSubscription {
             logger.trace(PageSubscriptionImpl.this + "::PageCursorInfo(" + pageId + ")::isDone checking with completePage!=null->" + (completePage != null) + " getNumberOfMessages=" + getNumberOfMessages() + ", confirmed=" + confirmed.get() + " and pendingTX=" + pendingTX.get());
 
          }
-         final int localNumberOfMessages = getNumberOfMessages();
-         //System.out.println("page " + this.pageId + " has numberOfMessages=" + localNumberOfMessages + ", confirmed = " + confirmed.get() + ", pending=" + pendingTX.get());
-         return completePage != null || (localNumberOfMessages > 0 && localNumberOfMessages == confirmed.get() && pendingTX.get() == 0);
+         return completePage != null || (getNumberOfMessages() == confirmed.get() && pendingTX.get() == 0);
       }
 
       public boolean isPendingDelete() {
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 32c1d9641a..c857df391e 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
@@ -532,15 +532,13 @@ public class PagingStoreImpl implements PagingStore {
 
    @Override
    public void stopPaging() {
-      new Exception("Stop paging being called with paging = " + this.paging).printStackTrace(System.out);
+      logger.debugf("stopPaging being called, while isPaging=%s on %s", this.paging, this.storeName);
       lock.writeLock().lock();
       try {
          final boolean isPaging = this.paging;
          if (isPaging) {
             paging = false;
             ActiveMQServerLogger.LOGGER.pageStoreStop(storeName, getPageInfo());
-         } else {
-            new Exception("It was already not paging").printStackTrace(System.out);
          }
          this.cursorProvider.onPageModeCleared();
       } finally {
@@ -718,6 +716,14 @@ public class PagingStoreImpl implements PagingStore {
                numberOfPages--;
             }
 
+            logger.tracef("Removing paging %s, now containing numberOfPages=%s", pageId, numberOfPages);
+
+            if (numberOfPages == 0) {
+               if (logger.isTraceEnabled()) {
+                  logger.tracef("Page has no pages after removing last page %s", pageId, new Exception("Trace"));
+               }
+            }
+
             assert numberOfPages >= 0 : "numberOfPages should never be negative. on removePage(" + pageId + "). numberOfPages=" + numberOfPages;
 
             return page;
diff --git a/tests/config/logging.properties b/tests/config/logging.properties
index 408134fe51..8a11bf6495 100644
--- a/tests/config/logging.properties
+++ b/tests/config/logging.properties
@@ -17,7 +17,8 @@
 
 # Additional logger names to configure (root logger is always configured)
 # Root logger option
-loggers=org.jboss.logging,org.apache.activemq.artemis.core.server,org.apache.activemq.artemis.utils,org.apache.activemq.artemis.core.journal,org.apache.activemq.artemis.core.client,org.apache.activemq.artemis.jms,org.apache.activemq.artemis.ra,org.apache.activemq.artemis.tests.smoke,org.apache.activemq.artemis.tests.unit,org.apache.activemq.artemis.tests.integration,org.apache.activemq.artemis.jms.tests,org.apache.activemq.cli.test,org.apache.activemq.audit,org.apache.activemq.audit.mess [...]
+loggers=org.jboss.logging,org.apache.activemq.artemis.core.server,org.apache.activemq.artemis.utils,org.apache.activemq.artemis.core.journal,org.apache.activemq.artemis.core.client,org.apache.activemq.artemis.jms,org.apache.activemq.artemis.ra,org.apache.activemq.artemis.tests.smoke,org.apache.activemq.artemis.tests.unit,org.apache.activemq.artemis.tests.integration,org.apache.activemq.artemis.jms.tests,org.apache.activemq.cli.test,org.apache.activemq.audit,org.apache.activemq.audit.message
+#loggers=org.jboss.logging,org.apache.activemq.artemis.core.server,org.apache.activemq.artemis.utils,org.apache.activemq.artemis.core.journal,org.apache.activemq.artemis.core.client,org.apache.activemq.artemis.jms,org.apache.activemq.artemis.ra,org.apache.activemq.artemis.tests.smoke,org.apache.activemq.artemis.tests.unit,org.apache.activemq.artemis.tests.integration,org.apache.activemq.artemis.jms.tests,org.apache.activemq.cli.test,org.apache.activemq.audit,org.apache.activemq.audit.mes [...]
 
 # Root logger level
 logger.level=INFO
@@ -28,7 +29,8 @@ logger.org.apache.activemq.artemis.core.client.level=INFO
 logger.org.apache.activemq.artemis.utils.level=INFO
 logger.org.apache.activemq.artemis.jms.level=INFO
 logger.org.apache.activemq.artemis.ra.level=INFO
-logger.org.apache.activemq.artemis.core.paging.cursor.impl.PageCursorProviderImpl.level=TRACE
+#logger.org.apache.activemq.artemis.core.paging.cursor.impl.PageCursorProviderImpl.level=TRACE
+#logger.org.apache.activemq.artemis.core.paging.cursor.impl.level=TRACE
 
 logger.org.apache.activemq.cli.test.level=DEBUG
 logger.org.apache.activemq.artemis.tests.integration.level=DEBUG
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java
index b33e8e20ad..12f0c2ef33 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java
@@ -159,7 +159,7 @@ public class PagingTest extends ActiveMQTestBase {
 
    @Parameterized.Parameters(name = "storeType={0}")
    public static Collection<Object[]> data() {
-      Object[][] params = new Object[][]{{StoreConfiguration.StoreType.FILE}};
+      Object[][] params = new Object[][]{{StoreConfiguration.StoreType.FILE}, {StoreConfiguration.StoreType.DATABASE}};
       return Arrays.asList(params);
    }
 
@@ -1392,6 +1392,15 @@ public class PagingTest extends ActiveMQTestBase {
          Wait.assertFalse(purgeQueue.getPageSubscription()::isPaging, 5000, 100);
       } catch (Throwable e) {
          e.printStackTrace();
+         purgeQueue.getPageSubscription().cleanupEntries(false);
+         if (Wait.waitFor(() -> {
+            purgeQueue.getPageSubscription().cleanupEntries(false);
+            return purgeQueue.getPageSubscription().isPaging() == false;
+         })) {
+            if (!purgeQueue.getPageSubscription().isPaging()) {
+               new Exception("cleared").printStackTrace(System.out);
+            }
+         }
          System.exit(-1);
       }