This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch fix_empty_tsfile_1 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 3a6bf0b0222f8d2227c9488cc4e64038ed3e65e2 Author: HTHou <[email protected]> AuthorDate: Wed Aug 20 17:17:32 2025 +0800 Fix empty tsfile and resource generated when insert, load, kill -9 and restart --- .../apache/iotdb/db/storageengine/dataregion/DataRegion.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 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 329728ab130..747668c31c4 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 @@ -964,7 +964,12 @@ public class DataRegion implements IDataRegionForQuery { new SealedTsFileRecoverPerformer(sealedTsFile)) { recoverPerformer.recover(); sealedTsFile.close(); - tsFileResourceManager.registerSealedTsFileResource(sealedTsFile); + if (!TsFileValidator.getInstance().validateTsFile(sealedTsFile)) { + sealedTsFile.remove(); + tsFileManager.remove(sealedTsFile, sealedTsFile.isSeq()); + } else { + tsFileResourceManager.registerSealedTsFileResource(sealedTsFile); + } } catch (Throwable e) { logger.error("Fail to recover sealed TsFile {}, skip it.", sealedTsFile.getTsFilePath(), e); } finally { @@ -1075,7 +1080,9 @@ public class DataRegion implements IDataRegionForQuery { lastFlushTimeMap.getMemSize(partitionId))); } for (TsFileResource tsFileResource : resourceList) { - updateDeviceLastFlushTime(tsFileResource); + if (!tsFileResource.isDeleted()) { + updateDeviceLastFlushTime(tsFileResource); + } } TimePartitionManager.getInstance() .updateAfterFlushing(
