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;