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/04/12 09:35:28 UTC
[incubator-iotdb] branch refactor_mem_control updated: undo time
update when insertion failed
This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch refactor_mem_control
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
The following commit(s) were added to refs/heads/refactor_mem_control by this push:
new 77bb08f undo time update when insertion failed
77bb08f is described below
commit 77bb08f2ebc2263646f3b8e7af066dceb635e885
Author: 江天 <jt...@163.com>
AuthorDate: Fri Apr 12 17:34:15 2019 +0800
undo time update when insertion failed
---
.../db/engine/bufferwrite/BufferWriteProcessor.java | 6 +++++-
.../apache/iotdb/db/engine/filenode/FileNodeManager.java | 6 ++++++
.../iotdb/db/engine/filenode/FileNodeProcessor.java | 16 ++++++++++++++++
.../apache/iotdb/db/engine/filenode/TsFileResource.java | 4 ++++
.../org/apache/iotdb/db/service/IoTDBShutdownHook.java | 10 +++++++---
5 files changed, 38 insertions(+), 4 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 91ace85..d5fcb05 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
@@ -192,7 +192,11 @@ public class BufferWriteProcessor extends Processor {
dataPoint.getValue().toString());
}
valueCount++;
- checkMemThreshold4Flush(memUsage);
+ try {
+ flush();
+ } catch (IOException e) {
+ throw new BufferWriteProcessorException(e);
+ }
return true;
case DANGEROUS:
default:
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 76e1f2f..12264f4 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
@@ -420,6 +420,9 @@ public class FileNodeManager implements IStatistic, IService {
// write wal
writeLog(tsRecord, isMonitor, bufferWriteProcessor.getLogNode());
// Write data
+ long prevStartTime = fileNodeProcessor.getIntervalFileNodeStartTime(deviceId);
+ long prevUpdateTime = fileNodeProcessor.getLastUpdateTime(deviceId);
+
fileNodeProcessor.setIntervalFileNodeStartTime(deviceId);
fileNodeProcessor.setLastUpdateTime(deviceId, timestamp);
try {
@@ -428,6 +431,9 @@ public class FileNodeManager implements IStatistic, IService {
if (!isMonitor) {
updateStatHashMapWhenFail(tsRecord);
}
+ // undo time update
+ fileNodeProcessor.setIntervalFileNodeStartTime(deviceId, prevStartTime);
+ fileNodeProcessor.setLastUpdateTime(deviceId, prevUpdateTime);
throw new FileNodeManagerException(e);
}
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 6818a79..47aca8e 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
@@ -371,6 +371,19 @@ public class FileNodeProcessor extends Processor implements IStatistic {
}
}
+ void setIntervalFileNodeStartTime(String deviceId, long time) {
+ if (time != -1) {
+ currentTsFileResource.setStartTime(deviceId, time);
+ } else {
+ currentTsFileResource.removeTime(deviceId);
+ invertedIndexOfFiles.get(deviceId).remove(currentTsFileResource);
+ }
+ }
+
+ long getIntervalFileNodeStartTime(String deviceId) {
+ return currentTsFileResource.getStartTime(deviceId);
+ }
+
/**
* clear filenode.
*/
@@ -587,6 +600,9 @@ public class FileNodeProcessor extends Processor implements IStatistic {
if (!lastUpdateTimeMap.containsKey(deviceId) || lastUpdateTimeMap.get(deviceId) < timestamp) {
lastUpdateTimeMap.put(deviceId, timestamp);
}
+ if (timestamp == -1) {
+ lastUpdateTimeMap.remove(deviceId);
+ }
}
/**
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/TsFileResource.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/TsFileResource.java
index 2806256..c349c62 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/TsFileResource.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/TsFileResource.java
@@ -169,6 +169,10 @@ public class TsFileResource {
}
}
+ public void removeStartTime(String deviceId) {
+ startTimeMap.remove(deviceId);
+ }
+
public Map<String, Long> getStartTimeMap() {
return startTimeMap;
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/service/IoTDBShutdownHook.java b/iotdb/src/main/java/org/apache/iotdb/db/service/IoTDBShutdownHook.java
index b333c0e..c5f3024 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/service/IoTDBShutdownHook.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/service/IoTDBShutdownHook.java
@@ -19,6 +19,7 @@
package org.apache.iotdb.db.service;
import org.apache.iotdb.db.engine.memcontrol.BasicMemController;
+import org.apache.iotdb.db.utils.MemUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,8 +29,11 @@ public class IoTDBShutdownHook extends Thread{
@Override
public void run() {
- LOGGER.info("Recorded memory usage: {}, actual jvm memory usage: {}",
- BasicMemController.getInstance().getTotalUsage(), Runtime.getRuntime().totalMemory() -
- Runtime.getRuntime().freeMemory());
+ if(LOGGER.isInfoEnabled()) {
+ LOGGER.info("Recorded memory usage: {}, actual jvm memory usage: {}",
+ MemUtils.bytesCntToStr(BasicMemController.getInstance().getTotalUsage()),
+ MemUtils.bytesCntToStr(Runtime.getRuntime().totalMemory() -
+ Runtime.getRuntime().freeMemory()));
+ }
}
}