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: 张凌哲 <[email protected]>
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);

Reply via email to