You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2022/04/13 07:15:22 UTC
[iotdb] branch master updated: [IOTDB-2897] Fix wal recover deadlock (#5499)
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 9e1a508be4 [IOTDB-2897] Fix wal recover deadlock (#5499)
9e1a508be4 is described below
commit 9e1a508be4d335d9ccac6f90b7c568bc5c5fe182
Author: Alan Choo <43...@users.noreply.github.com>
AuthorDate: Wed Apr 13 15:15:16 2022 +0800
[IOTDB-2897] Fix wal recover deadlock (#5499)
---
.../src/main/java/org/apache/iotdb/commons/concurrent/ThreadName.java | 1 +
server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java | 4 ++--
.../main/java/org/apache/iotdb/db/wal/recover/WALNodeRecoverTask.java | 4 +++-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/ThreadName.java b/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/ThreadName.java
index 2c86778dfa..6e76e05556 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/ThreadName.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/ThreadName.java
@@ -34,6 +34,7 @@ public enum ThreadName {
FLUSH_PARTIAL_POLICY("FlushPartialPolicy"),
FORCE_FLUSH_ALL_POLICY("ForceFlushAllPolicy"),
STAT_MONITOR("StatMonitor"),
+ DATA_REGION_RECOVER_SERVICE("Data-Region-Recover"),
FLUSH_SERVICE("Flush"),
FLUSH_SUB_TASK_SERVICE("Flush-SubTask"),
COMPACTION_SERVICE("Compaction"),
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
index 16d8fd5680..f589d8f402 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
@@ -232,8 +232,8 @@ public class StorageEngine implements IService {
public void recover() {
setAllSgReady(false);
recoveryThreadPool =
- IoTDBThreadPoolFactory.newFixedThreadPool(
- Runtime.getRuntime().availableProcessors(), "Recovery-Thread-Pool");
+ IoTDBThreadPoolFactory.newCachedThreadPool(
+ ThreadName.DATA_REGION_RECOVER_SERVICE.getName());
List<IStorageGroupMNode> sgNodes = IoTDB.schemaProcessor.getAllStorageGroupNodes();
// init wal recover manager
diff --git a/server/src/main/java/org/apache/iotdb/db/wal/recover/WALNodeRecoverTask.java b/server/src/main/java/org/apache/iotdb/db/wal/recover/WALNodeRecoverTask.java
index 0620c5b25d..b5dad827e8 100644
--- a/server/src/main/java/org/apache/iotdb/db/wal/recover/WALNodeRecoverTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/wal/recover/WALNodeRecoverTask.java
@@ -91,7 +91,9 @@ public class WALNodeRecoverTask implements Runnable {
File tsFile = new File(memTableInfo.getTsFilePath());
UnsealedTsFileRecoverPerformer recoverPerformer =
walRecoverManger.removeRecoverPerformer(tsFile.getAbsolutePath());
- memTableId2RecoverPerformer.put(memTableInfo.getMemTableId(), recoverPerformer);
+ if (recoverPerformer != null) {
+ memTableId2RecoverPerformer.put(memTableInfo.getMemTableId(), recoverPerformer);
+ }
}
}