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 76a334c49bea8dd67e8ddf86bb042918ce577917 Author: HTHou <[email protected]> AuthorDate: Wed Aug 20 17:49:13 2025 +0800 Fix more --- .../db/storageengine/dataregion/DataRegion.java | 26 +++++++++------------- 1 file changed, 11 insertions(+), 15 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 747668c31c4..04f959be5b4 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 @@ -581,9 +581,10 @@ public class DataRegion implements IDataRegionForQuery { } } } - for (List<TsFileResource> value : partitionTmpUnseqTsFiles.values()) { + for (List<TsFileResource> unseqTsFiles : partitionTmpUnseqTsFiles.values()) { + List<TsFileResource> unsealedTsFiles = new ArrayList<>(); // tsFiles without resource file are unsealed - for (TsFileResource resource : value) { + for (TsFileResource resource : unseqTsFiles) { if (resource.resourceFileExists()) { FileMetrics.getInstance() .addTsFile( @@ -592,6 +593,13 @@ public class DataRegion implements IDataRegionForQuery { resource.getTsFile().length(), false, resource.getTsFile().getName()); + } else { + WALRecoverListener recoverListener = + recoverUnsealedTsFile(resource, dataRegionRecoveryContext, false); + if (recoverListener != null) { + recoverListeners.add(recoverListener); + } + unsealedTsFiles.add(resource); } if (ModificationFile.getExclusiveMods(resource.getTsFile()).exists()) { // update mods file metrics @@ -600,19 +608,7 @@ public class DataRegion implements IDataRegionForQuery { resource.upgradeModFile(upgradeModFileThreadPool); } } - while (!value.isEmpty()) { - TsFileResource tsFileResource = value.get(value.size() - 1); - if (tsFileResource.resourceFileExists()) { - break; - } else { - value.remove(value.size() - 1); - WALRecoverListener recoverListener = - recoverUnsealedTsFile(tsFileResource, dataRegionRecoveryContext, false); - if (recoverListener != null) { - recoverListeners.add(recoverListener); - } - } - } + unseqTsFiles.removeAll(unsealedTsFiles); } // signal wal recover manager to recover this region's files WALRecoverManager.getInstance().getAllDataRegionScannedLatch().countDown();
