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; + } }
