From 90f86e15918f9dde0b028dfda6cafe42f04ce956 Mon Sep 17 00:00:00 2001 From: shuwenwei Date: Thu, 13 Jun 2024 14:23:14 +0800 Subject: [PATCH 1/2] fix compaction npe when set modified status --- .../utils/executor/readchunk/loader/ChunkLoader.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/ChunkLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/ChunkLoader.java index c91f1500d9303..c5fc459af25de 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/ChunkLoader.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/ChunkLoader.java @@ -70,9 +70,15 @@ protected ModifiedStatus calculatePageModifiedStatus(PageHeader pageHeader) { return this.modifiedStatus; } ModifiedStatus pageModifiedStatus = ModifiedStatus.NONE_DELETED; + if (pageHeader.getStatistics() == null) { + return pageModifiedStatus; + } List deleteIntervalList = chunkMetadata.getDeleteIntervalList(); long startTime = pageHeader.getStartTime(); long endTime = pageHeader.getEndTime(); + if (startTime > endTime) { + return pageModifiedStatus; + } TimeRange pageTimeRange = new TimeRange(startTime, endTime); for (TimeRange timeRange : deleteIntervalList) { if (timeRange.contains(pageTimeRange)) { From d3ae7fbd54dfde9a04ee8a2479459b64b1ea899b Mon Sep 17 00:00:00 2001 From: shuwenwei Date: Fri, 14 Jun 2024 18:15:47 +0800 Subject: [PATCH 2/2] check empty page --- .../execute/utils/executor/readchunk/loader/ChunkLoader.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/ChunkLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/ChunkLoader.java index c5fc459af25de..856fb868f08b3 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/ChunkLoader.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/ChunkLoader.java @@ -70,15 +70,12 @@ protected ModifiedStatus calculatePageModifiedStatus(PageHeader pageHeader) { return this.modifiedStatus; } ModifiedStatus pageModifiedStatus = ModifiedStatus.NONE_DELETED; - if (pageHeader.getStatistics() == null) { + if (pageHeader.getStatistics() == null || pageHeader.getStatistics().getCount() == 0) { return pageModifiedStatus; } List deleteIntervalList = chunkMetadata.getDeleteIntervalList(); long startTime = pageHeader.getStartTime(); long endTime = pageHeader.getEndTime(); - if (startTime > endTime) { - return pageModifiedStatus; - } TimeRange pageTimeRange = new TimeRange(startTime, endTime); for (TimeRange timeRange : deleteIntervalList) { if (timeRange.contains(pageTimeRange)) {