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

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

commit f32543af190be2df22fa686e277bab3f8d2bcb45
Author: HTHou <[email protected]>
AuthorDate: Wed Jun 5 16:46:35 2024 +0800

    Print log when read resource error
---
 .../dataregion/tsfile/TsFileResource.java           | 21 +++++++++++++++++++--
 .../tsfile/timeindex/DeviceTimeIndex.java           | 16 ++++++++++++++++
 .../dataregion/tsfile/timeindex/FileTimeIndex.java  |  5 +++++
 3 files changed, 40 insertions(+), 2 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java
index cdb5bca403e..ffefdb3f51e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java
@@ -388,12 +388,29 @@ public class TsFileResource {
   }
 
   public long getStartTime(IDeviceID deviceId) {
-    return deviceId == null ? getFileStartTime() : 
timeIndex.getStartTime(deviceId);
+    try {
+      return deviceId == null ? getFileStartTime() : 
timeIndex.getStartTime(deviceId);
+    } catch (Exception e) {
+      LOGGER.error(
+          "meet error when getStartTime of {} in file {}", deviceId, 
file.getAbsolutePath());
+      if (LOGGER.isDebugEnabled()) {
+        LOGGER.error("TimeIndex = {}", timeIndex.toString());
+      }
+      throw e;
+    }
   }
 
   /** open file's end time is Long.MIN_VALUE */
   public long getEndTime(IDeviceID deviceId) {
-    return deviceId == null ? getFileEndTime() : 
timeIndex.getEndTime(deviceId);
+    try {
+      return deviceId == null ? getFileEndTime() : 
timeIndex.getEndTime(deviceId);
+    } catch (Exception e) {
+      LOGGER.error("meet error when getEndTime of {} in file {}", deviceId, 
file.getAbsolutePath());
+      if (LOGGER.isDebugEnabled()) {
+        LOGGER.error("TimeIndex = {}", timeIndex.toString());
+      }
+      throw e;
+    }
   }
 
   public long getOrderTime(IDeviceID deviceId, boolean ascending) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/DeviceTimeIndex.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/DeviceTimeIndex.java
index 6b36f9ae56e..f233261d076 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/DeviceTimeIndex.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/DeviceTimeIndex.java
@@ -450,4 +450,20 @@ public class DeviceTimeIndex implements ITimeIndex {
   public byte getTimeIndexType() {
     return DEVICE_TIME_INDEX_TYPE;
   }
+
+  @Override
+  public String toString() {
+    StringBuilder builder = new StringBuilder();
+    builder.append(" DeviceIndexMapSize = ").append(deviceToIndex.size());
+    builder.append(" startTimeLength = ").append(startTimes.length);
+    builder.append(" endTimeLength = ").append(endTimes.length);
+    builder.append(" DeviceIndexMap = [");
+    deviceToIndex.forEach(
+        (key, value) ->
+            builder.append(" device = ").append(key).append(", index = 
").append(value));
+    builder.append("]");
+    builder.append(" StartTimes = ").append(Arrays.toString(startTimes));
+    builder.append(" EndTimes = ").append(Arrays.toString(endTimes));
+    return builder.toString();
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/FileTimeIndex.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/FileTimeIndex.java
index 679413d462c..5a1feb8e68e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/FileTimeIndex.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/FileTimeIndex.java
@@ -247,4 +247,9 @@ public class FileTimeIndex implements ITimeIndex {
   public byte getTimeIndexType() {
     return FILE_TIME_INDEX_TYPE;
   }
+
+  @Override
+  public String toString() {
+    return " StartTimes = " + startTime + " EndTimes = " + endTime;
+  }
 }

Reply via email to