This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 6b43820c134 fix last time check (#13479)
6b43820c134 is described below
commit 6b43820c13429ada277d91c64bfd5ad6c4be71fe
Author: shuwenwei <[email protected]>
AuthorDate: Wed Sep 11 18:22:40 2024 +0800
fix last time check (#13479)
---
.../ReadChunkAlignedSeriesCompactionExecutor.java | 8 ++++--
...nkCompactionPerformerWithAlignedSeriesTest.java | 32 ++++++++++++++++++++++
2 files changed, 38 insertions(+), 2 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/ReadChunkAlignedSeriesCompactionExecutor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/ReadChunkAlignedSeriesCompactionExecutor.java
index 239071b54dc..65fc6c5c217 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/ReadChunkAlignedSeriesCompactionExecutor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/ReadChunkAlignedSeriesCompactionExecutor.java
@@ -254,7 +254,9 @@ public class ReadChunkAlignedSeriesCompactionExecutor {
throws IOException {
writer.markStartingWritingAligned();
checkAndUpdatePreviousTimestamp(timeChunk.getChunkMetadata().getStartTime());
- checkAndUpdatePreviousTimestamp(timeChunk.getChunkMetadata().getEndTime());
+ if (timeChunk.getChunkMetadata().getStartTime() !=
timeChunk.getChunkMetadata().getEndTime()) {
+
checkAndUpdatePreviousTimestamp(timeChunk.getChunkMetadata().getEndTime());
+ }
writer.writeChunk(timeChunk.getChunk(), timeChunk.getChunkMetadata());
timeChunk.clear();
int nonEmptyChunkNum = 1;
@@ -334,7 +336,9 @@ public class ReadChunkAlignedSeriesCompactionExecutor {
throws PageException, IOException {
int nonEmptyPage = 1;
checkAndUpdatePreviousTimestamp(timePage.getHeader().getStartTime());
- checkAndUpdatePreviousTimestamp(timePage.getHeader().getEndTime());
+ if (timePage.getHeader().getStartTime() !=
timePage.getHeader().getEndTime()) {
+ checkAndUpdatePreviousTimestamp(timePage.getHeader().getEndTime());
+ }
timePage.flushToTimeChunkWriter(chunkWriter);
for (int i = 0; i < valuePageLoaders.size(); i++) {
PageLoader valuePage = valuePageLoaders.get(i);
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/NewReadChunkCompactionPerformerWithAlignedSeriesTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/NewReadChunkCompactionPerformerWithAlignedSeriesTest.java
index de3c1af434f..34021c3b7fe 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/NewReadChunkCompactionPerformerWithAlignedSeriesTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/NewReadChunkCompactionPerformerWithAlignedSeriesTest.java
@@ -572,6 +572,38 @@ public class
NewReadChunkCompactionPerformerWithAlignedSeriesTest extends Abstra
Collections.singletonList(targetResource),
Collections.emptyList())));
}
+ @Test
+ public void testCompactOnePoint() throws Exception {
+ long targetChunkSize =
IoTDBDescriptor.getInstance().getConfig().getTargetChunkSize();
+ IoTDBDescriptor.getInstance().getConfig().setTargetChunkSize(1);
+ try {
+ TsFileResource seqResource1 =
+ generateSingleAlignedSeriesFile(
+ "d0",
+ Arrays.asList("s0", "s1", "s2"),
+ new TimeRange[] {new TimeRange(1, 1)},
+ TSEncoding.PLAIN,
+ CompressionType.LZ4,
+ Arrays.asList(false, false, false),
+ true);
+ seqResources.add(seqResource1);
+
+ CompactionTaskSummary summary = new CompactionTaskSummary();
+ TsFileResource targetResource = performCompaction(summary);
+ Assert.assertEquals(4, summary.getDirectlyFlushChunkNum());
+ Assert.assertEquals(0, summary.getDirectlyFlushPageCount());
+ Assert.assertEquals(0, summary.getRewritePointNum());
+ TsFileResourceUtils.validateTsFileDataCorrectness(targetResource);
+ Assert.assertTrue(
+ CompactionCheckerUtils.compareSourceDataAndTargetData(
+ CompactionCheckerUtils.getAllDataByQuery(seqResources,
unseqResources),
+ CompactionCheckerUtils.getAllDataByQuery(
+ Collections.singletonList(targetResource),
Collections.emptyList())));
+ } finally {
+
IoTDBDescriptor.getInstance().getConfig().setTargetChunkSize(targetChunkSize);
+ }
+ }
+
@Test
public void testCompactionWithDifferentCompressionTypeOrEncoding() throws
Exception {
TsFileResource seqResource1 =