This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch fix_async_recover_error_1.3 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 7d53f1a89e95e91b3a69f093b91d7fc18841d393 Author: HTHou <[email protected]> AuthorDate: Thu Nov 28 16:56:59 2024 +0800 Fix async recover TsfileResource error handle --- .../apache/iotdb/db/storageengine/dataregion/DataRegion.java | 3 ++- .../db/storageengine/dataregion/utils/TsFileResourceUtils.java | 10 +++++++--- 2 files changed, 9 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 a07aeafc6a4..4721d27eff7 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 @@ -888,7 +888,8 @@ public class DataRegion implements IDataRegionForQuery { Callable<Void> asyncRecoverTask = null; for (TsFileResource tsFileResource : resourceList) { tsFileManager.add(tsFileResource, isSeq); - if (fileTimeIndexMap.containsKey(tsFileResource.getTsFileID())) { + if (fileTimeIndexMap.containsKey(tsFileResource.getTsFileID()) + && tsFileResource.resourceFileExists()) { tsFileResource.setTimeIndex(fileTimeIndexMap.get(tsFileResource.getTsFileID())); tsFileResource.setStatus(TsFileResourceStatus.NORMAL); resourceListForAsyncRecover.add(tsFileResource); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TsFileResourceUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TsFileResourceUtils.java index 4ab7f5f109b..6493cd9ca34 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TsFileResourceUtils.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TsFileResourceUtils.java @@ -19,6 +19,8 @@ package org.apache.iotdb.db.storageengine.dataregion.utils; +import org.apache.iotdb.db.conf.IoTDBConfig; +import org.apache.iotdb.db.conf.IoTDBDescriptor; import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionUtils; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus; @@ -61,6 +63,7 @@ import java.util.Set; public class TsFileResourceUtils { private static final Logger logger = LoggerFactory.getLogger(TsFileResourceUtils.class); + private static final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig(); private static final String VALIDATE_FAILED = "validate failed,"; private TsFileResourceUtils() { @@ -425,14 +428,15 @@ public class TsFileResourceUtils { public static void updateTsFileResource( Map<IDeviceID, List<TimeseriesMetadata>> device2Metadata, TsFileResource tsFileResource) { + ITimeIndex newTimeIndex = config.getTimeIndexLevel().getTimeIndex(); for (Map.Entry<IDeviceID, List<TimeseriesMetadata>> entry : device2Metadata.entrySet()) { for (TimeseriesMetadata timeseriesMetaData : entry.getValue()) { - tsFileResource.updateStartTime( + newTimeIndex.updateStartTime( entry.getKey(), timeseriesMetaData.getStatistics().getStartTime()); - tsFileResource.updateEndTime( - entry.getKey(), timeseriesMetaData.getStatistics().getEndTime()); + newTimeIndex.updateEndTime(entry.getKey(), timeseriesMetaData.getStatistics().getEndTime()); } } + tsFileResource.setTimeIndex(newTimeIndex); } /**
