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);
}