This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch fix_async_recover_error
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit ca2b37ab5a0e669001982726265f39044e45ef57
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 e073ffa5cf7..7c13596057e 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
@@ -906,7 +906,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 0b0bc60be47..315a44909bd 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() {
@@ -428,14 +431,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);
   }
 
   /**

Reply via email to