From 76e63f7b039d105c9334e50d3e6c8e5eb384a817 Mon Sep 17 00:00:00 2001 From: HTHou Date: Wed, 1 Nov 2023 15:46:58 +0800 Subject: [PATCH 1/2] fix empty resource recovered from wal --- .../apache/iotdb/db/storageengine/dataregion/DataRegion.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java index 3d63bc658ba6e..3398f66e876a6 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java @@ -724,6 +724,10 @@ private void recoverUnsealedTsFileCallBack(UnsealedTsFileRecoverPerformer recove TsFileResource tsFileResource = recoverPerformer.getTsFileResource(); boolean isSeq = recoverPerformer.isSequence(); if (!recoverPerformer.canWrite()) { + if (!TsFileValidator.getInstance().validateTsFile(tsFileResource)) { + tsFileResource.remove(); + return; + } // cannot write, just close it try { tsFileResource.close(); From 9db0ad9db02316dbcfd5c89da0d46a331e741c7e Mon Sep 17 00:00:00 2001 From: HTHou Date: Wed, 1 Nov 2023 16:17:12 +0800 Subject: [PATCH 2/2] fix empty resource recovered from wal --- .../iotdb/db/storageengine/dataregion/DataRegion.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java index 3398f66e876a6..024f5dfd2adf5 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java @@ -724,16 +724,16 @@ private void recoverUnsealedTsFileCallBack(UnsealedTsFileRecoverPerformer recove TsFileResource tsFileResource = recoverPerformer.getTsFileResource(); boolean isSeq = recoverPerformer.isSequence(); if (!recoverPerformer.canWrite()) { - if (!TsFileValidator.getInstance().validateTsFile(tsFileResource)) { - tsFileResource.remove(); - return; - } // cannot write, just close it try { tsFileResource.close(); } catch (IOException e) { logger.error("Fail to close TsFile {} when recovering", tsFileResource.getTsFile(), e); } + if (!TsFileValidator.getInstance().validateTsFile(tsFileResource)) { + tsFileResource.remove(); + return; + } updateLastFlushTime(tsFileResource, isSeq); tsFileResourceManager.registerSealedTsFileResource(tsFileResource); FileMetrics.getInstance()