You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hx...@apache.org on 2019/06/07 00:44:26 UTC

[incubator-iotdb] branch feature_async_close_tsfile updated: change nanoTime to millsecond in FlushUtil

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

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


The following commit(s) were added to refs/heads/feature_async_close_tsfile by this push:
     new 1347e31  change nanoTime to millsecond in FlushUtil
1347e31 is described below

commit 1347e310b36c6886fd9cc2f3f594be8bd8f16b65
Author: xiangdong huang <sa...@gmail.com>
AuthorDate: Fri Jun 7 08:44:14 2019 +0800

    change nanoTime to millsecond in FlushUtil
---
 .../apache/iotdb/db/engine/filenode/FileNodeManager.java   | 12 +++++++++++-
 .../apache/iotdb/db/engine/memtable/MemTableFlushUtil.java | 14 +++++++-------
 .../apache/iotdb/db/engine/memtable/WritableMemChunk.java  |  2 --
 3 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java
index b93bfe1..15e3aea 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java
@@ -43,6 +43,7 @@ import org.apache.iotdb.db.conf.directories.Directories;
 import org.apache.iotdb.db.engine.Processor;
 import org.apache.iotdb.db.engine.bufferwrite.BufferWriteProcessor;
 import org.apache.iotdb.db.engine.memcontrol.BasicMemController;
+import org.apache.iotdb.db.engine.memcontrol.BasicMemController.UsageLevel;
 import org.apache.iotdb.db.engine.overflow.io.OverflowProcessor;
 import org.apache.iotdb.db.engine.pool.FlushManager;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
@@ -309,13 +310,21 @@ public class FileNodeManager implements IStatistic, IService {
    * @param tsRecord input Data
    * @param isMonitor if true, the insertion is done by StatMonitor and the statistic Info will not
    * be recorded. if false, the statParamsHashMap will be updated.
-   * @return an int value represents the insert type
+   * @return an int value represents the insert type, 0: failed; 1: overflow; 2: bufferwrite
    */
   public int insert(TSRecord tsRecord, boolean isMonitor) throws FileNodeManagerException {
     long timestamp = tsRecord.time;
 
     String deviceId = tsRecord.deviceId;
     checkTimestamp(tsRecord);
+//    //if memory is dangerous, directly reject
+//    long memUsage = MemUtils.getRecordSize(tsRecord);
+//    BasicMemController.UsageLevel level = BasicMemController.getInstance()
+//        .acquireUsage(this, memUsage);
+//    if (level == UsageLevel.DANGEROUS) {
+//      return 0;
+//    }
+
     updateStat(isMonitor, tsRecord);
 
     FileNodeProcessor fileNodeProcessor = getProcessor(deviceId, true);
@@ -458,6 +467,7 @@ public class FileNodeManager implements IStatistic, IService {
         throw new FileNodeManagerException(e);
       }
     }
+
     // write wal
     try {
       writeLog(tsRecord, isMonitor, bufferWriteProcessor.getLogNode());
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/MemTableFlushUtil.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/MemTableFlushUtil.java
index 3b4d614..8cd0ec7 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/MemTableFlushUtil.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/MemTableFlushUtil.java
@@ -97,29 +97,29 @@ public class MemTableFlushUtil {
       tsFileIoWriter.startFlushChunkGroup(deviceId);
       int seriesNumber = imemTable.getMemTableMap().get(deviceId).size();
       for (String measurementId : imemTable.getMemTableMap().get(deviceId).keySet()) {
-        long startTime = System.nanoTime();
+        long startTime = System.currentTimeMillis();
         // TODO if we can not use TSFileIO writer, then we have to redesign the class of TSFileIO.
         IWritableMemChunk series = imemTable.getMemTableMap().get(deviceId).get(measurementId);
         MeasurementSchema desc = fileSchema.getMeasurementSchema(measurementId);
         List<TimeValuePair> sortedTimeValuePairs = series.getSortedTimeValuePairList();
-        tmpTime = System.nanoTime();
+        tmpTime = System.currentTimeMillis();
         sortTime += tmpTime - startTime;
         ChunkBuffer chunkBuffer = new ChunkBuffer(desc);
         IChunkWriter seriesWriter = new ChunkWriterImpl(desc, chunkBuffer, PAGE_SIZE_THRESHOLD);
         writeOneSeries(sortedTimeValuePairs, seriesWriter, desc.getType());
-        startTime = System.nanoTime();
+        startTime = System.currentTimeMillis();
         memSerializeTime += startTime - tmpTime;
         seriesWriter.writeToFileWriter(tsFileIoWriter);
-        ioTime += System.nanoTime() - startTime;
+        ioTime += System.currentTimeMillis() - startTime;
       }
-      tmpTime = System.nanoTime();
+      tmpTime = System.currentTimeMillis();
       long memSize = tsFileIoWriter.getPos() - startPos;
       ChunkGroupFooter footer = new ChunkGroupFooter(deviceId, memSize, seriesNumber);
       tsFileIoWriter.endChunkGroup(footer, version);
-      ioTime += System.nanoTime() - tmpTime;
+      ioTime += System.currentTimeMillis() - tmpTime;
     }
     LOGGER.info(
         "flushing a memtable into disk: data sort time cost {} ms, serialize data into mem cost {} ms, io cost {} ms.",
-        sortTime / 1000_000, memSerializeTime / 1000_000, ioTime / 1000_000);
+        sortTime , memSerializeTime , ioTime );
   }
 }
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
index 608c48d..3c36f98 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
@@ -22,7 +22,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.TreeMap;
 import org.apache.iotdb.db.utils.PrimitiveArrayList;
 import org.apache.iotdb.db.utils.PrimitiveArrayListFactory;
 import org.apache.iotdb.db.utils.TimeValuePair;
@@ -135,7 +134,6 @@ public class WritableMemChunk implements IWritableMemChunk {
     map.forEach((k, v) -> ret.add(new TimeValuePairInMemTable(k, v)));
     ret.sort(TimeValuePair::compareTo);
     return ret;
-
   }
 
   @Override