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

jackietien pushed a commit to branch rel/1.2
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/1.2 by this push:
     new 715bcb8d26d [To rel/1.2] Fix wal recover rel1.2
715bcb8d26d is described below

commit 715bcb8d26d6a5bbe3ba8b12c50e6f515c780fb4
Author: Zhijia Cao <[email protected]>
AuthorDate: Fri Oct 13 21:11:42 2023 +0800

    [To rel/1.2] Fix wal recover rel1.2
---
 .../apache/iotdb/consensus/config/RatisConfig.java |  2 +-
 .../dataregion/wal/recover/WALNodeRecoverTask.java | 61 ++++++++++++----------
 2 files changed, 33 insertions(+), 30 deletions(-)

diff --git 
a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/config/RatisConfig.java
 
b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/config/RatisConfig.java
index c1b97bfceea..f55cbb75d22 100644
--- 
a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/config/RatisConfig.java
+++ 
b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/config/RatisConfig.java
@@ -267,7 +267,7 @@ public class RatisConfig {
       private TimeDuration timeoutMax = TimeDuration.valueOf(4, 
TimeUnit.SECONDS);
       private TimeDuration requestTimeout = TimeDuration.valueOf(20, 
TimeUnit.SECONDS);
       private TimeDuration sleepTime = TimeDuration.valueOf(1, 
TimeUnit.SECONDS);
-      private TimeDuration slownessTimeout = TimeDuration.valueOf(10, 
TimeUnit.MINUTES);
+      private TimeDuration slownessTimeout = TimeDuration.valueOf(3, 
TimeUnit.DAYS);
 
       private TimeDuration firstElectionTimeoutMin =
           TimeDuration.valueOf(50, TimeUnit.MILLISECONDS);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALNodeRecoverTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALNodeRecoverTask.java
index 0f1e0d6a5b4..3d9fd3c051a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALNodeRecoverTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALNodeRecoverTask.java
@@ -82,7 +82,6 @@ public class WALNodeRecoverTask implements Runnable {
         recoverPerformer.getRecoverListener().fail(e);
       }
     } finally {
-      allNodesRecoveredLatch.countDown();
       for (UnsealedTsFileRecoverPerformer recoverPerformer : 
memTableId2RecoverPerformer.values()) {
         try {
           if (!recoverPerformer.canWrite()) {
@@ -94,36 +93,40 @@ public class WALNodeRecoverTask implements Runnable {
       }
     }
 
-    if 
(!config.getDataRegionConsensusProtocolClass().equals(ConsensusFactory.IOT_CONSENSUS))
 {
-      // delete this wal node folder
-      FileUtils.deleteDirectory(logDirectory);
-      logger.info(
-          "Successfully recover WAL node in the directory {}, so delete these 
wal files.",
-          logDirectory);
-    } else {
-      // delete checkpoint info to avoid repeated recover
-      File[] checkpointFiles = 
CheckpointFileUtils.listAllCheckpointFiles(logDirectory);
-      for (File checkpointFile : checkpointFiles) {
-        try {
-          Files.delete(checkpointFile.toPath());
-        } catch (IOException e) {
-          logger.error("error when delete checkpoint file. {}", 
checkpointFile, e);
+    try {
+      if 
(!config.getDataRegionConsensusProtocolClass().equals(ConsensusFactory.IOT_CONSENSUS))
 {
+        // delete this wal node folder
+        FileUtils.deleteDirectory(logDirectory);
+        logger.info(
+            "Successfully recover WAL node in the directory {}, so delete 
these wal files.",
+            logDirectory);
+      } else {
+        // delete checkpoint info to avoid repeated recover
+        File[] checkpointFiles = 
CheckpointFileUtils.listAllCheckpointFiles(logDirectory);
+        for (File checkpointFile : checkpointFiles) {
+          try {
+            Files.delete(checkpointFile.toPath());
+          } catch (IOException e) {
+            logger.error("error when delete checkpoint file. {}", 
checkpointFile, e);
+          }
         }
+        // recover version id and search index
+        long[] indexInfo = recoverLastFile();
+        long lastVersionId = indexInfo[0];
+        long lastSearchIndex = indexInfo[1];
+        // register wal node
+        WALManager.getInstance()
+            .registerWALNode(
+                logDirectory.getName(),
+                logDirectory.getAbsolutePath(),
+                lastVersionId + 1,
+                lastSearchIndex);
+        logger.info(
+            "Successfully recover WAL node in the directory {}, add this node 
to WALManger.",
+            logDirectory);
       }
-      // recover version id and search index
-      long[] indexInfo = recoverLastFile();
-      long lastVersionId = indexInfo[0];
-      long lastSearchIndex = indexInfo[1];
-      // register wal node
-      WALManager.getInstance()
-          .registerWALNode(
-              logDirectory.getName(),
-              logDirectory.getAbsolutePath(),
-              lastVersionId + 1,
-              lastSearchIndex);
-      logger.info(
-          "Successfully recover WAL node in the directory {}, add this node to 
WALManger.",
-          logDirectory);
+    } finally {
+      allNodesRecoveredLatch.countDown();
     }
   }
 

Reply via email to