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/01/26 03:04:43 UTC
[incubator-iotdb] branch fix_sonar_jt updated: fix other quality
problems
This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch fix_sonar_jt
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
The following commit(s) were added to refs/heads/fix_sonar_jt by this push:
new 43e3a5d fix other quality problems
43e3a5d is described below
commit 43e3a5d7ddbfb5df87d47d3a62b718fc99b40637
Author: 江天 <jt...@163.com>
AuthorDate: Sat Jan 26 11:03:56 2019 +0800
fix other quality problems
---
.../db/engine/memcontrol/FlushPartialPolicy.java | 13 ++++--
.../db/engine/memcontrol/ForceFLushAllPolicy.java | 19 ++++----
.../db/engine/memcontrol/JVMMemController.java | 26 ++++++-----
.../db/engine/memcontrol/MemStatisticThread.java | 33 +++++++------
.../iotdb/db/engine/memcontrol/NoActPolicy.java | 10 ++--
.../db/engine/memcontrol/RecordMemController.java | 54 +++++++++++++++-------
.../engine/memtable/TimeValuePairInMemTable.java | 2 +-
7 files changed, 98 insertions(+), 59 deletions(-)
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/FlushPartialPolicy.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/FlushPartialPolicy.java
index 9088cba..5f0fb5e 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/FlushPartialPolicy.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/FlushPartialPolicy.java
@@ -36,11 +36,14 @@ public class FlushPartialPolicy implements Policy {
@Override
public void execute() {
- logger.debug("Memory reaches {}, current memory size is {}, JVM memory is {}, flushing.",
- BasicMemController.getInstance().getCurrLevel(),
- MemUtils.bytesCntToStr(BasicMemController.getInstance().getTotalUsage()),
- MemUtils.bytesCntToStr(Runtime.getRuntime().totalMemory()
- - Runtime.getRuntime().freeMemory()));
+ if (logger.isDebugEnabled()) {
+ logger.debug("Memory reaches {}, current memory size is {}, JVM memory is {}, flushing.",
+ BasicMemController.getInstance().getCurrLevel(),
+ MemUtils.bytesCntToStr(BasicMemController.getInstance().getTotalUsage()),
+ MemUtils.bytesCntToStr(Runtime.getRuntime().totalMemory()
+ - Runtime.getRuntime().freeMemory()));
+ }
+
// use a thread to avoid blocking
if (workerThread == null) {
workerThread = createWorkerThread();
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/ForceFLushAllPolicy.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/ForceFLushAllPolicy.java
index 8b06420..c78c34f 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/ForceFLushAllPolicy.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/ForceFLushAllPolicy.java
@@ -31,11 +31,14 @@ public class ForceFLushAllPolicy implements Policy {
@Override
public void execute() {
- logger.info("Memory reaches {}, current memory size is {}, JVM memory is {}, flushing.",
- BasicMemController.getInstance().getCurrLevel(),
- MemUtils.bytesCntToStr(BasicMemController.getInstance().getTotalUsage()),
- MemUtils.bytesCntToStr(Runtime.getRuntime().totalMemory()
- - Runtime.getRuntime().freeMemory()));
+ if (logger.isInfoEnabled()) {
+ logger.info("Memory reaches {}, current memory size is {}, JVM memory is {}, flushing.",
+ BasicMemController.getInstance().getCurrLevel(),
+ MemUtils.bytesCntToStr(BasicMemController.getInstance().getTotalUsage()),
+ MemUtils.bytesCntToStr(Runtime.getRuntime().totalMemory()
+ - Runtime.getRuntime().freeMemory()));
+ }
+
// use a thread to avoid blocking
if (workerThread == null) {
workerThread = createWorkerThread();
@@ -51,8 +54,8 @@ public class ForceFLushAllPolicy implements Policy {
}
private Thread createWorkerThread() {
- return new Thread(() -> {
- FileNodeManager.getInstance().forceFlush(BasicMemController.UsageLevel.DANGEROUS);
- }, ThreadName.FORCE_FLUSH_ALL_POLICY.getName());
+ return new Thread(() ->
+ FileNodeManager.getInstance().forceFlush(BasicMemController.UsageLevel.DANGEROUS),
+ ThreadName.FORCE_FLUSH_ALL_POLICY.getName());
}
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/JVMMemController.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/JVMMemController.java
index 41fcf48..f6d3164 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/JVMMemController.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/JVMMemController.java
@@ -28,9 +28,6 @@ public class JVMMemController extends BasicMemController {
private static Logger logger = LoggerFactory.getLogger(JVMMemController.class);
- // memory used by non-data objects, this is used to estimate the memory used by data
- private long nonDataUsage = 0;
-
private JVMMemController(IoTDBConfig config) {
super(config);
}
@@ -41,6 +38,8 @@ public class JVMMemController extends BasicMemController {
@Override
public long getTotalUsage() {
+ // memory used by non-data objects, this is used to estimate the memory used by data
+ long nonDataUsage = 0;
return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory() - nonDataUsage;
}
@@ -67,22 +66,27 @@ public class JVMMemController extends BasicMemController {
if (memUsage < warningThreshold) {
return UsageLevel.SAFE;
} else if (memUsage < dangerouseThreshold) {
- logger.debug("Warning Threshold : {} allocated to {}, total usage {}",
- MemUtils.bytesCntToStr(usage),
- user.getClass(), MemUtils.bytesCntToStr(memUsage));
+ if (logger.isDebugEnabled()) {
+ logger.debug("Warning Threshold : {} allocated to {}, total usage {}",
+ MemUtils.bytesCntToStr(usage),
+ user.getClass(), MemUtils.bytesCntToStr(memUsage));
+ }
return UsageLevel.WARNING;
} else {
- logger.warn("Memory request from {} is denied, memory usage : {}", user.getClass(),
- MemUtils.bytesCntToStr(memUsage));
+ if (logger.isWarnEnabled()) {
+ logger.warn("Memory request from {} is denied, memory usage : {}", user.getClass(),
+ MemUtils.bytesCntToStr(memUsage));
+ }
return UsageLevel.DANGEROUS;
}
}
@Override
public void reportFree(Object user, long freeSize) {
- logger
- .info("{} freed from {}, total usage {}", MemUtils.bytesCntToStr(freeSize),
- user.getClass(), MemUtils.bytesCntToStr(getTotalUsage()));
+ if (logger.isInfoEnabled()) {
+ logger.info("{} freed from {}, total usage {}", MemUtils.bytesCntToStr(freeSize),
+ user.getClass(), MemUtils.bytesCntToStr(getTotalUsage()));
+ }
}
private static class InstanceHolder {
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/MemStatisticThread.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/MemStatisticThread.java
index 42d7575..dfdfd4d 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/MemStatisticThread.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/MemStatisticThread.java
@@ -27,9 +27,6 @@ public class MemStatisticThread extends Thread {
private static Logger logger = LoggerFactory.getLogger(MemStatisticThread.class);
- // update statistic every such interval
- private long checkInterval = 100; // in ms
-
private long minMemUsage = Long.MAX_VALUE;
private long maxMemUsage = Long.MIN_VALUE;
private double meanMemUsage = 0.0;
@@ -37,8 +34,6 @@ public class MemStatisticThread extends Thread {
private long maxJvmUsage = Long.MIN_VALUE;
private double meanJvmUsage = 0.0;
private int cnt = 0;
- // log statistic every so many intervals
- private int reportCycle = 6000;
public MemStatisticThread() {
this.setName(ThreadName.MEMORY_STATISTICS.getName());
@@ -75,16 +70,13 @@ public class MemStatisticThread extends Thread {
meanMemUsage = meanMemUsage * (doubleCnt / (doubleCnt + 1.0)) + memUsage / (doubleCnt + 1.0);
meanJvmUsage = meanJvmUsage * (doubleCnt / (doubleCnt + 1.0)) + jvmUsage / (doubleCnt + 1.0);
- if (++cnt % reportCycle == 0) {
- logger.debug(
- "Monitored memory usage, min {}, max {}, mean {} \n"
- + "JVM memory usage, min {}, max {}, mean {}",
- MemUtils.bytesCntToStr(minMemUsage), MemUtils.bytesCntToStr(maxMemUsage),
- MemUtils.bytesCntToStr((long) meanMemUsage),
- MemUtils.bytesCntToStr(minJvmUsage), MemUtils.bytesCntToStr(maxJvmUsage),
- MemUtils.bytesCntToStr((long) meanJvmUsage));
- }
+ // log statistic every so many intervals
+ report();
+
try {
+ // update statistic every such interval
+ // in ms
+ long checkInterval = 100;
Thread.sleep(checkInterval);
} catch (InterruptedException e) {
logger.info("MemMonitorThread exiting...");
@@ -94,4 +86,17 @@ public class MemStatisticThread extends Thread {
}
}
+ private void report() {
+ int reportCycle = 6000;
+ if (++cnt % reportCycle == 0 && logger.isDebugEnabled()) {
+ logger.debug(
+ "Monitored memory usage, min {}, max {}, mean {} \n"
+ + "JVM memory usage, min {}, max {}, mean {}",
+ MemUtils.bytesCntToStr(minMemUsage), MemUtils.bytesCntToStr(maxMemUsage),
+ MemUtils.bytesCntToStr((long) meanMemUsage),
+ MemUtils.bytesCntToStr(minJvmUsage), MemUtils.bytesCntToStr(maxJvmUsage),
+ MemUtils.bytesCntToStr((long) meanJvmUsage));
+ }
+ }
+
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/NoActPolicy.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/NoActPolicy.java
index 0f4ecb1..141ec15 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/NoActPolicy.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/NoActPolicy.java
@@ -28,9 +28,11 @@ public class NoActPolicy implements Policy {
@Override
public void execute() {
- logger.debug("Memory check is safe, current usage {}, JVM memory {}",
- MemUtils.bytesCntToStr(BasicMemController.getInstance().getTotalUsage()),
- MemUtils
- .bytesCntToStr(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()));
+ if (logger.isDebugEnabled()) {
+ logger.debug("Memory check is safe, current usage {}, JVM memory {}",
+ MemUtils.bytesCntToStr(BasicMemController.getInstance().getTotalUsage()),
+ MemUtils.bytesCntToStr(Runtime.getRuntime().totalMemory()
+ - Runtime.getRuntime().freeMemory()));
+ }
}
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/RecordMemController.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/RecordMemController.java
index d6efbf3..d7aa4bc 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/RecordMemController.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/RecordMemController.java
@@ -86,36 +86,56 @@ public class RecordMemController extends BasicMemController {
}
long newTotUsage = totalMemUsed.get() + usage;
// check if the new usage will reach dangerous threshold
+ if (newTotUsage > dangerouseThreshold) {
+ logDangerous(newTotUsage, user);
+ return UsageLevel.DANGEROUS;
+ }
+
if (newTotUsage < dangerouseThreshold) {
newTotUsage = totalMemUsed.addAndGet(usage);
// double check if updating will reach dangerous threshold
if (newTotUsage < warningThreshold) {
// still safe, action taken
memMap.put(user, oldUsage + usage);
- logger.debug("Safe Threshold : {} allocated to {}, it is using {}, total usage {}",
- MemUtils.bytesCntToStr(usage), user.getClass(),
- MemUtils.bytesCntToStr(oldUsage + usage),
- MemUtils.bytesCntToStr(newTotUsage));
+ logSafe(newTotUsage, user, usage, oldUsage);
return UsageLevel.SAFE;
} else if (newTotUsage < dangerouseThreshold) {
// become warning because competition with other threads, still take the action
memMap.put(user, oldUsage + usage);
- logger.debug("Warning Threshold : {} allocated to {}, it is using {}, total usage {}",
- MemUtils.bytesCntToStr(usage), user.getClass(),
- MemUtils.bytesCntToStr(oldUsage + usage),
- MemUtils.bytesCntToStr(newTotUsage));
+ logWarn(newTotUsage, user, usage, oldUsage);
return UsageLevel.WARNING;
} else {
- logger.warn("Memory request from {} is denied, memory usage : {}", user.getClass(),
- MemUtils.bytesCntToStr(newTotUsage));
+ logDangerous(newTotUsage, user);
// become dangerous because competition with other threads, discard this action
totalMemUsed.addAndGet(-usage);
return UsageLevel.DANGEROUS;
}
- } else {
+ }
+ return null;
+ }
+
+ private void logDangerous(long newTotUsage, Object user) {
+ if (logger.isWarnEnabled()) {
logger.warn("Memory request from {} is denied, memory usage : {}", user.getClass(),
MemUtils.bytesCntToStr(newTotUsage));
- return UsageLevel.DANGEROUS;
+ }
+ }
+
+ private void logSafe(long newTotUsage, Object user, long usage, long oldUsage) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Safe Threshold : {} allocated to {}, it is using {}, total usage {}",
+ MemUtils.bytesCntToStr(usage), user.getClass(),
+ MemUtils.bytesCntToStr(oldUsage + usage),
+ MemUtils.bytesCntToStr(newTotUsage));
+ }
+ }
+
+ private void logWarn(long newTotUsage, Object user, long usage, long oldUsage) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Warning Threshold : {} allocated to {}, it is using {}, total usage {}",
+ MemUtils.bytesCntToStr(usage), user.getClass(),
+ MemUtils.bytesCntToStr(oldUsage + usage),
+ MemUtils.bytesCntToStr(newTotUsage));
}
}
@@ -139,10 +159,12 @@ public class RecordMemController extends BasicMemController {
} else {
memMap.remove(user);
}
- logger.info("{} freed from {}, it is using {}, total usage {}",
- MemUtils.bytesCntToStr(freeSize),
- user.getClass(), MemUtils.bytesCntToStr(usage - freeSize),
- MemUtils.bytesCntToStr(newTotalMemUsage));
+ if (logger.isInfoEnabled()) {
+ logger.info("{} freed from {}, it is using {}, total usage {}",
+ MemUtils.bytesCntToStr(freeSize),
+ user.getClass(), MemUtils.bytesCntToStr(usage - freeSize),
+ MemUtils.bytesCntToStr(newTotalMemUsage));
+ }
}
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/TimeValuePairInMemTable.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/TimeValuePairInMemTable.java
index fda87a5..94c2349 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/TimeValuePairInMemTable.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/TimeValuePairInMemTable.java
@@ -37,7 +37,7 @@ public class TimeValuePairInMemTable extends TimeValuePair implements
@Override
public boolean equals(Object object) {
- if (object == null || !(object instanceof TimeValuePairInMemTable)) {
+ if (!(object instanceof TimeValuePairInMemTable)) {
return false;
}
TimeValuePairInMemTable o = (TimeValuePairInMemTable) object;