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 <[email protected]>
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);
+ }
}
}