This is an automated email from the ASF dual-hosted git repository.
chaow pushed a commit to branch rel/0.12
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.12 by this push:
new 94044fc to_0.11_fix_unseq_compaction_loss_data_bug (#3255)
94044fc is described below
commit 94044fce7b9c336fcf6f3ea599f37ec2bdc936f2
Author: zhanglingzhe0820 <[email protected]>
AuthorDate: Tue May 25 10:04:55 2021 +0800
to_0.11_fix_unseq_compaction_loss_data_bug (#3255)
Co-authored-by: zhanglingzhe <[email protected]>
---
.../iotdb/db/engine/merge/task/MergeMultiChunkTask.java | 13 +++++++++++--
.../org/apache/iotdb/db/engine/merge/MergeTaskTest.java | 7 +++++--
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/merge/task/MergeMultiChunkTask.java
b/server/src/main/java/org/apache/iotdb/db/engine/merge/task/MergeMultiChunkTask.java
index 2b4bb4e..a1866f0 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/merge/task/MergeMultiChunkTask.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/merge/task/MergeMultiChunkTask.java
@@ -195,6 +195,16 @@ public class MergeMultiChunkTask {
mergeLogger.logTSEnd();
}
+ private String getMaxSensor(List<PartialPath> sensors) {
+ String maxSensor = sensors.get(0).getMeasurement();
+ for (int i = 1; i < sensors.size(); i++) {
+ if (maxSensor.compareTo(sensors.get(i).getMeasurement()) < 0) {
+ maxSensor = sensors.get(i).getMeasurement();
+ }
+ }
+ return maxSensor;
+ }
+
private void pathsMergeOneFile(int seqFileIdx, IPointReader[] unseqReaders)
throws IOException {
TsFileResource currTsFile = resource.getSeqFiles().get(seqFileIdx);
String deviceId = currMergingPaths.get(0).getDevice();
@@ -238,7 +248,7 @@ public class MergeMultiChunkTask {
return;
}
- String lastSensor = currMergingPaths.get(currMergingPaths.size() -
1).getMeasurement();
+ String lastSensor = getMaxSensor(currMergingPaths);
String currSensor = null;
Map<String, List<ChunkMetadata>> measurementChunkMetadataListMap = new
TreeMap<>();
// find all sensor to merge in order, if exceed, then break
@@ -455,7 +465,6 @@ public class MergeMultiChunkTask {
IChunkWriter chunkWriter,
TsFileResource currFile)
throws IOException {
-
int unclosedChunkPoint = lastUnclosedChunkPoint;
boolean chunkModified =
(currMeta.getDeleteIntervalList() != null &&
!currMeta.getDeleteIntervalList().isEmpty());
diff --git
a/server/src/test/java/org/apache/iotdb/db/engine/merge/MergeTaskTest.java
b/server/src/test/java/org/apache/iotdb/db/engine/merge/MergeTaskTest.java
index 092f223..ec69dfc 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/merge/MergeTaskTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/merge/MergeTaskTest.java
@@ -215,12 +215,15 @@ public class MergeTaskTest extends MergeTest {
null,
null,
true);
+ long count = 0L;
while (tsFilesReader.hasNextBatch()) {
BatchData batchData = tsFilesReader.nextBatch();
- for (int i = 0; i < batchData.length(); i++) {
- assertEquals(batchData.getTimeByIndex(i) + 20000.0,
batchData.getDoubleByIndex(i), 0.001);
+ for (int t = 0; t < batchData.length(); t++) {
+ assertEquals(batchData.getTimeByIndex(t) + 20000.0,
batchData.getDoubleByIndex(t), 0.001);
+ count++;
}
}
+ assertEquals(100, count);
tsFilesReader.close();
}