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();
}
}