You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2019/02/17 02:16:09 UTC

[incubator-iotdb] branch delete_dev3 updated: fix by comments

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

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


The following commit(s) were added to refs/heads/delete_dev3 by this push:
     new ba51118  fix by comments
     new 2be6b6d  Merge branch 'delete_dev2' into delete_dev3
ba51118 is described below

commit ba51118541bfd3d66ddb401975cade1a1c156271
Author: jt <jt...@163.com>
AuthorDate: Sun Feb 17 10:13:13 2019 +0800

    fix by comments
---
 .../engine/bufferwrite/BufferWriteProcessor.java   |  4 ++--
 .../db/engine/filenode/FileNodeProcessor.java      | 12 +++++++++++-
 .../iotdb/db/engine/memtable/AbstractMemTable.java |  2 +-
 .../apache/iotdb/db/engine/memtable/IMemTable.java |  2 +-
 .../io/LocalTextModificationAccessor.java          |  3 ++-
 .../db/engine/overflow/ioV2/OverflowSupport.java   |  5 ++---
 .../version/SimpleFileVersionController.java       | 22 ++++++++++++++++------
 .../engine/modification/DeletionFileNodeTest.java  |  2 +-
 .../iotdb/db/integration/IoTDBCompleteIT.java      |  4 ++--
 .../iotdb/db/integration/IoTDBMetadataFetchIT.java |  2 +-
 10 files changed, 39 insertions(+), 19 deletions(-)

diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/bufferwrite/BufferWriteProcessor.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/bufferwrite/BufferWriteProcessor.java
index 7feac6b..16a5c0d 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/bufferwrite/BufferWriteProcessor.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/bufferwrite/BufferWriteProcessor.java
@@ -515,11 +515,11 @@ public class BufferWriteProcessor extends Processor {
    * @param timestamp the upper-bound of deletion time.
    */
   public void delete(String deviceId, String measurementId, long timestamp) {
-    workMemTable.delele(deviceId, measurementId, timestamp);
+    workMemTable.delete(deviceId, measurementId, timestamp);
     if (isFlush) {
       // flushing MemTable cannot be directly modified since another thread is reading it
       flushMemTable = flushMemTable.copy();
-      flushMemTable.delele(deviceId, measurementId, timestamp);
+      flushMemTable.delete(deviceId, measurementId, timestamp);
     }
   }
 }
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeProcessor.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeProcessor.java
index 88952a5..63eaa9f 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeProcessor.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeProcessor.java
@@ -1884,6 +1884,15 @@ public class FileNodeProcessor extends Processor implements IStatistic {
     }
     closeBufferWrite();
     closeOverflow();
+    for (IntervalFileNode fileNode : newFileNodes) {
+      if (fileNode.getModFile() != null) {
+        try {
+          fileNode.getModFile().close();
+        } catch (IOException e) {
+          throw new FileNodeProcessorException(e);
+        }
+      }
+    }
   }
 
   @Override
@@ -1951,7 +1960,8 @@ public class FileNodeProcessor extends Processor implements IStatistic {
         currentIntervalFileNode.getModFile().write(deletion);
       }
       for (IntervalFileNode fileNode : newFileNodes) {
-        if(fileNode != currentIntervalFileNode && fileNode.containsDevice(deviceId)) {
+        if(fileNode != currentIntervalFileNode && fileNode.containsDevice(deviceId)
+            && fileNode.getStartTime(deviceId) <= timestamp) {
           fileNode.getModFile().write(deletion);
         }
       }
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java
index ed95b93..bb95a25 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java
@@ -102,7 +102,7 @@ public abstract class AbstractMemTable implements IMemTable {
   }
 
   @Override
-  public void delele(String deviceId, String measurementId, long timestamp) {
+  public void delete(String deviceId, String measurementId, long timestamp) {
     Map<String, IWritableMemChunk> deviceMap = memTableMap.get(deviceId);
     if (deviceMap != null) {
       IWritableMemChunk chunk = deviceMap.get(measurementId);
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/IMemTable.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/IMemTable.java
index efc9065..4833ffa 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/IMemTable.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/IMemTable.java
@@ -54,7 +54,7 @@ public interface IMemTable {
    * @param measurementId the measurementId of the timeseries to be deleted.
    * @param timestamp the upper-bound of deletion time.
    */
-  void delele(String deviceId, String measurementId, long timestamp);
+  void delete(String deviceId, String measurementId, long timestamp);
 
   /**
    * Make a copy of this MemTable.
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/modification/io/LocalTextModificationAccessor.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/modification/io/LocalTextModificationAccessor.java
index 3372540..ee9abaf 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/modification/io/LocalTextModificationAccessor.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/modification/io/LocalTextModificationAccessor.java
@@ -70,9 +70,10 @@ public class LocalTextModificationAccessor implements ModificationReader, Modifi
         modificationList.add(decodeModification(line));
       }
     } catch (IOException e) {
-      reader.close();
       logger.error("An error occurred when reading modifications, and the remaining modifications "
               + "were ignored.", e);
+    } finally {
+      reader.close();
     }
     return modificationList;
   }
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/overflow/ioV2/OverflowSupport.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/overflow/ioV2/OverflowSupport.java
index ddf818f..f4f1652 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/overflow/ioV2/OverflowSupport.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/overflow/ioV2/OverflowSupport.java
@@ -25,7 +25,6 @@ import org.apache.iotdb.db.engine.memtable.IMemTable;
 import org.apache.iotdb.db.engine.memtable.PrimitiveMemTable;
 import org.apache.iotdb.db.engine.memtable.TimeValuePairSorter;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.BatchData;
 import org.apache.iotdb.tsfile.write.record.TSRecord;
 import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
 
@@ -74,9 +73,9 @@ public class OverflowSupport {
   public void delete(String deviceId, String measurementId, long timestamp, boolean isFlushing) {
     if (isFlushing) {
       memTable = memTable.copy();
-      memTable.delele(deviceId, measurementId, timestamp);
+      memTable.delete(deviceId, measurementId, timestamp);
     } else {
-      memTable.delele(deviceId, measurementId, timestamp);
+      memTable.delete(deviceId, measurementId, timestamp);
     }
   }
 
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/version/SimpleFileVersionController.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/version/SimpleFileVersionController.java
index 5a63806..a38f4be 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/version/SimpleFileVersionController.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/version/SimpleFileVersionController.java
@@ -87,17 +87,27 @@ public class SimpleFileVersionController implements VersionController {
     File[] versionFiles = directory.listFiles((dir, name) -> name.startsWith(FILE_PREFIX));
     File versionFile = null;
     if (versionFiles != null && versionFiles.length > 0) {
-      Arrays.sort(versionFiles, Comparator.comparing(File::getName));
-      versionFile = versionFiles[versionFiles.length - 1];
-      for(int i = 0; i < versionFiles.length - 1; i ++) {
-        versionFiles[i].delete();
+      long maxVersion = 0;
+      int maxVersionIndex = 0;
+      for (int i = 0; i < versionFiles.length; i ++) {
+        // extract version from "Version-123456"
+        long fileVersion = Long.parseLong(versionFiles[i].getName().split("-")[1]);
+        if (fileVersion > maxVersion) {
+          maxVersion = fileVersion;
+          maxVersionIndex = i;
+        }
+      }
+      prevVersion = maxVersion;
+      for(int i = 0; i < versionFiles.length; i ++) {
+        if (i != maxVersionIndex) {
+          versionFiles[i].delete();
+        }
       }
     } else {
       versionFile = new File(directory, FILE_PREFIX + "0");
+      prevVersion = 0;
       new FileOutputStream(versionFile).close();
     }
-    // extract version from "Version-123456"
-    prevVersion = Long.parseLong(versionFile.getName().split("-")[1]);
     // prevent overlapping in case of failure
     currVersion = prevVersion + SAVE_INTERVAL;
     persist();
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/engine/modification/DeletionFileNodeTest.java b/iotdb/src/test/java/org/apache/iotdb/db/engine/modification/DeletionFileNodeTest.java
index 528c62e..70281fb 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/engine/modification/DeletionFileNodeTest.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/engine/modification/DeletionFileNodeTest.java
@@ -71,7 +71,7 @@ public class DeletionFileNodeTest {
       MManager.getInstance().addPathToMTree(processorName + "." + measurements[i], dataType,
               encoding, args);
       FileNodeManager.getInstance().addTimeSeries(new Path(processorName, measurements[i]), dataType,
-              encoding, args);
+              encoding);
     }
   }
 
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/integration/IoTDBCompleteIT.java b/iotdb/src/test/java/org/apache/iotdb/db/integration/IoTDBCompleteIT.java
index 163a083..0bb646b 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/integration/IoTDBCompleteIT.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/integration/IoTDBCompleteIT.java
@@ -104,11 +104,11 @@ public class IoTDBCompleteIT {
             + "                 StorageGroup: root.vehicle \n" + "            }\n" + "        },\n"
             + "        d5:{\n" + "            s9:{\n" + "                 DataType: FLOAT,\n"
             + "                 Encoding: PLAIN,\n"
-            + "                 args: {compressor=SNAPPY, MAX_POINT_NUMBER=10},\n"
+            + "                 args: {MAX_POINT_NUMBER=10, compressor=SNAPPY},\n"
             + "                 StorageGroup: root.vehicle \n" + "            }\n" + "        },\n"
             + "        d6:{\n" + "            s10:{\n" + "                 DataType: DOUBLE,\n"
             + "                 Encoding: RLE,\n"
-            + "                 args: {compressor=UNCOMPRESSOR, MAX_POINT_NUMBER=10},\n"
+            + "                 args: {MAX_POINT_NUMBER=10, compressor=UNCOMPRESSOR},\n"
             + "                 StorageGroup: root.vehicle \n" + "            }\n" + "        }\n"
             + "    }\n" + "}",
         "DELETE TIMESERIES root.vehicle.*", "SHOW TIMESERIES",
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/integration/IoTDBMetadataFetchIT.java b/iotdb/src/test/java/org/apache/iotdb/db/integration/IoTDBMetadataFetchIT.java
index a3fa584..94cc02c 100644
--- a/iotdb/src/test/java/org/apache/iotdb/db/integration/IoTDBMetadataFetchIT.java
+++ b/iotdb/src/test/java/org/apache/iotdb/db/integration/IoTDBMetadataFetchIT.java
@@ -366,7 +366,7 @@ public class IoTDBMetadataFetchIT {
             + "                     StorageGroup: root.ln.wf01.wt01 \n" + "                },\n"
             + "                temperature:{\n" + "                     DataType: FLOAT,\n"
             + "                     Encoding: RLE,\n"
-            + "                     args: {compressor=SNAPPY, MAX_POINT_NUMBER=3},\n"
+            + "                     args: {MAX_POINT_NUMBER=3, compressor=SNAPPY},\n"
             + "                     StorageGroup: root.ln.wf01.wt01 \n" + "                }\n"
             + "            }\n"
             + "        }\n" + "    }\n" + "}";