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