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 3671829993 ARTEMIS-4191 Adding debug statements around reclaiming and 
compacting
3671829993 is described below

commit 367182999325d7beb9971a6d209262b1d91124ac
Author: Clebert Suconic <[email protected]>
AuthorDate: Tue May 16 09:56:22 2023 -0400

    ARTEMIS-4191 Adding debug statements around reclaiming and compacting
---
 .../artemis/core/journal/TestableJournal.java      | 11 +----
 .../artemis/core/journal/impl/JournalImpl.java     | 54 ++++++++++++++++------
 2 files changed, 40 insertions(+), 25 deletions(-)

diff --git 
a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/TestableJournal.java
 
b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/TestableJournal.java
index dfe7e56730..cf9e74a5ab 100644
--- 
a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/TestableJournal.java
+++ 
b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/TestableJournal.java
@@ -54,16 +54,7 @@ public interface TestableJournal extends Journal {
 
    JournalFile getCurrentFile();
 
-   /**
-    * This method is called automatically when a new file is opened.
-    * <p>
-    * It will among other things, remove stale files and make them available 
for reuse.
-    * <p>
-    * This method locks the journal.
-    *
-    * @return true if it needs to re-check due to cleanup or other factors
-    */
-   boolean checkReclaimStatus() throws Exception;
+   void checkReclaimStatus() throws Exception;
 
    @Override
    JournalFile[] getDataFiles();
diff --git 
a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalImpl.java
 
b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalImpl.java
index 1f6ae936bc..724c9695bc 100644
--- 
a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalImpl.java
+++ 
b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/journal/impl/JournalImpl.java
@@ -2518,25 +2518,33 @@ public class JournalImpl extends JournalBase implements 
TestableJournal, Journal
       return name.substring(filesRepository.getFilePrefix().length() + 1, 
name.indexOf("-", filesRepository.getFilePrefix().length() + 1));
    }
 
-   /**
-    * @return true if cleanup was called
-    */
    @Override
-   public final boolean checkReclaimStatus() throws Exception {
+   public final void checkReclaimStatus() throws Exception {
 
+      logger.trace("JournalImpl::checkReclaimStatus");
       if (compactorRunning.get()) {
-         return false;
+         logger.trace("Giving up checkReclaimStatus as compactor is running");
+         return;
       }
 
       // We can't start reclaim while compacting is working
       while (true) {
-         if (state != JournalImpl.JournalState.LOADED)
-            return false;
-         if (!isAutoReclaim())
-            return false;
-         if (journalLock.readLock().tryLock(250, TimeUnit.MILLISECONDS))
+         logger.trace("JournalImpl::checkReclaimStatus Trying to get a read 
lock on reclaming");
+         if (state != JournalImpl.JournalState.LOADED) {
+            return;
+         }
+         if (!isAutoReclaim()) {
+            logger.trace("JournalImpl::checkReclaimStatus has no autoReclaim, 
giving up loop");
+            return;
+         }
+         if (journalLock.readLock().tryLock(250, TimeUnit.MILLISECONDS)) {
+            logger.trace("JournalImpl checkReclaimStatus readLock acquired");
             break;
+         }
+         logger.trace("Could not acquire readLock on checkReclaimStatus, 
retrying loop");
       }
+
+      logger.debug("JournalImpl::checkReclaimStatus() starting");
       try {
          scan(getDataFiles());
 
@@ -2554,7 +2562,9 @@ public class JournalImpl extends JournalBase implements 
TestableJournal, Journal
          journalLock.readLock().unlock();
       }
 
-      return false;
+      logger.debug("JournalImpl::checkReclaimStatus() finishing");
+
+      return;
    }
 
    private boolean needsCompact() throws Exception {
@@ -2625,18 +2635,20 @@ public class JournalImpl extends JournalBase implements 
TestableJournal, Journal
          return;
       }
 
+      logger.debug("JournalImpl::scheduleCompact() starting");
+
       // We can't use the executor for the compacting... or we would dead lock 
because of file open and creation
       // operations (that will use the executor)
       compactorExecutor.execute(new Runnable() {
          @Override
          public void run() {
-
             try {
                JournalImpl.this.compact();
             } catch (Throwable e) {
                ActiveMQJournalLogger.LOGGER.errorCompacting(e);
             } finally {
                compactorRunning.set(false);
+               logger.debug("JournalImpl::scheduleCompact() done");
             }
          }
       });
@@ -3267,20 +3279,30 @@ public class JournalImpl extends JournalBase implements 
TestableJournal, Journal
          return;
       }
 
+      if (logger.isDebugEnabled()) {
+         logger.debug("JournalImpl::scheduleReclaim, autoReclaim={}, 
compactorRunning={}", isAutoReclaim(), compactorRunning.get());
+      }
+
       if (isAutoReclaim() && !compactorRunning.get()) {
+         logger.trace("Scheduling reclaim and compactor checks");
          compactorExecutor.execute(new Runnable() {
             @Override
             public void run() {
                try {
                   processBackup();
-                  if (!checkReclaimStatus()) {
-                     checkCompact();
-                  }
+                  checkReclaimStatus();
+                  checkCompact();
                } catch (Exception e) {
                   ActiveMQJournalLogger.LOGGER.errorSchedulingCompacting(e);
+               } finally {
+                  logger.debug("JournalImpl::scheduleReclaim finished");
                }
             }
          });
+      } else {
+         if (logger.isDebugEnabled()) {
+            logger.debug("Ignoring scheduleReclaim call because of 
autoReclaim={} and compactorRunning={}", isAutoReclaim(), 
compactorRunning.get());
+         }
       }
    }
 
@@ -3565,6 +3587,8 @@ public class JournalImpl extends JournalBase implements 
TestableJournal, Journal
 
       if (scheduleReclaim) {
          scheduleReclaim();
+      } else {
+         logger.trace("JournalImpl::moveNextFile scheduleReclaim is false, not 
calling scheduleReclaim");
       }
 
       logger.trace("Moving next file {}", currentFile);

Reply via email to