This is an automated email from the ASF dual-hosted git repository. jiangtian pushed a commit to branch debug_apply_stuck in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 51d937bc731c7fced4a0872137ea6af5212fec7d Author: jt <[email protected]> AuthorDate: Thu Apr 22 09:54:23 2021 +0800 fix spotless --- .../apache/iotdb/cluster/log/manage/RaftLogManager.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/RaftLogManager.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/RaftLogManager.java index d818990..7b4e4dc 100644 --- a/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/RaftLogManager.java +++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/RaftLogManager.java @@ -19,7 +19,6 @@ package org.apache.iotdb.cluster.log.manage; -import java.util.Arrays; import org.apache.iotdb.cluster.config.ClusterDescriptor; import org.apache.iotdb.cluster.exception.EntryCompactedException; import org.apache.iotdb.cluster.exception.EntryUnavailableException; @@ -41,6 +40,7 @@ import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; @@ -944,7 +944,6 @@ public abstract class RaftLogManager { nextToCheckIndex); return; } - boolean stuckLogPrinted = false; long waitedTime; long waitStartTime = System.currentTimeMillis(); synchronized (log) { @@ -952,12 +951,15 @@ public abstract class RaftLogManager { // wait until the log is applied or a newer snapshot is installed log.wait(5); waitedTime = System.currentTimeMillis() - waitStartTime; - if (!stuckLogPrinted && waitedTime > 60_000L) { + if (waitedTime > 60_000L) { Thread applyingThread = log.getApplyingThread(); - logger.error("The application of log {} is stuck for over 1 minutes, processing " - + "thread: {}, thread traces: {}", log, applyingThread, + logger.error( + "The application of log {} is stuck for over 1 minutes, processing " + + "thread: {}, thread traces: {}", + log, + applyingThread, applyingThread != null ? Arrays.toString(applyingThread.getStackTrace()) : "null"); - stuckLogPrinted = true; + waitStartTime = System.currentTimeMillis(); } } }
