You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2020/06/29 05:38:08 UTC

[incubator-iotdb] branch hot_compaction updated: fix vm file merge bug

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

jackietien pushed a commit to branch hot_compaction
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git


The following commit(s) were added to refs/heads/hot_compaction by this push:
     new 9934b36  fix vm file merge bug
     new 5b94dc2  Merge pull request #1432 from zhanglingzhe0820/fix_vm_merge_bug
9934b36 is described below

commit 9934b3605d635211d302f573cc0ce9af2c4a9810
Author: 张凌哲 <zh...@bytedance.com>
AuthorDate: Mon Jun 29 11:43:21 2020 +0800

    fix vm file merge bug
---
 .../main/java/org/apache/iotdb/db/engine/flush/VmMergeTask.java  | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/flush/VmMergeTask.java b/server/src/main/java/org/apache/iotdb/db/engine/flush/VmMergeTask.java
index d03bdca..3b333e1 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/flush/VmMergeTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/flush/VmMergeTask.java
@@ -28,6 +28,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
+import java.util.TreeMap;
 import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
 import org.apache.iotdb.tsfile.read.TimeValuePair;
 import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
@@ -98,7 +99,7 @@ public class VmMergeTask {
         for (String measurementId : deviceMeasurementMap.get(deviceId).keySet()) {
           MeasurementSchema measurementSchema = deviceMeasurementMap.get(deviceId)
               .get(measurementId);
-          List<TimeValuePair> timeValuePairs = new ArrayList<>();
+          Map<Long, TimeValuePair> timeValuePairMap = new TreeMap<>();
           for (RestorableTsFileIOWriter vmWriter : vmWriters) {
             TsFileSequenceReader reader = tsFileSequenceReaderMap
                 .computeIfAbsent(vmWriter.getFile().getAbsolutePath(),
@@ -127,15 +128,15 @@ public class VmMergeTask {
                 IPointReader iPointReader = new BatchDataIterator(
                     chunkReader.nextPageData());
                 while (iPointReader.hasNextTimeValuePair()) {
-                  timeValuePairs.add(iPointReader.nextTimeValuePair());
+                  TimeValuePair timeValuePair = iPointReader.nextTimeValuePair();
+                  timeValuePairMap.put(timeValuePair.getTimestamp(), timeValuePair);
                 }
               }
             }
           }
-          timeValuePairs.sort((o1, o2) -> (int) (o1.getTimestamp() - o2.getTimestamp()));
           IChunkWriter chunkWriter = new ChunkWriterImpl(
               deviceMeasurementMap.get(deviceId).get(measurementId));
-          for (TimeValuePair timeValuePair : timeValuePairs) {
+          for (TimeValuePair timeValuePair : timeValuePairMap.values()) {
             writeTimeValuePair(timeValuePair, chunkWriter);
           }
           chunkWriter.writeToFileWriter(writer);