You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2017/02/28 07:36:36 UTC

svn commit: r1784697 - in /felix/trunk/webconsole-plugins/memoryusage: changelog.txt src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageSupport.java

Author: cziegeler
Date: Tue Feb 28 07:36:36 2017
New Revision: 1784697

URL: http://svn.apache.org/viewvc?rev=1784697&view=rev
Log:
FELIX-4019 - Memory Management Plugin does not handle unknown values properly

Modified:
    felix/trunk/webconsole-plugins/memoryusage/changelog.txt
    felix/trunk/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageSupport.java

Modified: felix/trunk/webconsole-plugins/memoryusage/changelog.txt
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/memoryusage/changelog.txt?rev=1784697&r1=1784696&r2=1784697&view=diff
==============================================================================
--- felix/trunk/webconsole-plugins/memoryusage/changelog.txt (original)
+++ felix/trunk/webconsole-plugins/memoryusage/changelog.txt Tue Feb 28 07:36:36 2017
@@ -2,6 +2,7 @@ Changes from 1.0.6 to 1.0.8
 ---------------------------
 ** Bug
     * [FELIX-5552] - Handle MemoryPoolMXBean.getUsed returning -1
+    * [FELIX-4019] - Memory Management Plugin does not handle unknown values properly
 
 
 Changes from 1.0.4 to 1.0.6

Modified: felix/trunk/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageSupport.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageSupport.java?rev=1784697&r1=1784696&r2=1784697&view=diff
==============================================================================
--- felix/trunk/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageSupport.java (original)
+++ felix/trunk/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageSupport.java Tue Feb 28 07:36:36 2017
@@ -366,19 +366,33 @@ final class MemoryUsageSupport implement
             buf.append(",'type':'").append(pool.getType()).append('\'');
 
             MemoryUsage usage = pool.getUsage();
-            usedTotal += formatNumber(buf, "used", usage.getUsed());
-            initTotal += formatNumber(buf, "init", usage.getInit());
-            committedTotal += formatNumber(buf, "committed", usage.getCommitted());
-            maxTotal += formatNumber(buf, "max", usage.getMax());
+            final long used = usage.getUsed();
+            formatNumber(buf, "used", used);
+            if ( used > -1 )
+            {
+                usedTotal += used;
+            }
+            final long init = usage.getInit();
+            formatNumber(buf, "init", init);
+            if ( init > - 1 )
+            {
+                initTotal +=  init;
+            }
+            final long committed = usage.getCommitted();
+            formatNumber(buf, "committed", committed);
+            committedTotal += committed;
+            final long max = usage.getMax();
+            formatNumber(buf, "max", usage.getMax());
 
             final long score;
-            if ( usage.getMax() == -1 )
+            if ( max == -1 || used == -1 )
             {
                 score = 100;
             }
             else
             {
-                score = 100L * usage.getUsed() / usage.getMax();
+                maxTotal += max;
+                score = 100L * used / max;
             }
             buf.append(",'score':'").append(score).append("%'");
 
@@ -402,7 +416,7 @@ final class MemoryUsageSupport implement
         return buf.toString();
     }
 
-    long formatNumber(final StringBuilder buf, final String title, final long value)
+    void formatNumber(final StringBuilder buf, final String title, final long value)
     {
 
         final BigDecimal KB = new BigDecimal(1000L);
@@ -426,13 +440,25 @@ final class MemoryUsageSupport implement
             bd = bd.divide(KB);
             suffix = "kB";
         }
-        else
+        else if (value >= 0 )
         {
             suffix = "B";
         }
-        bd = bd.setScale(2, RoundingMode.UP);
-        buf.append(",'").append(title).append("':'").append(bd).append(suffix).append('\'');
-        return value;
+        else
+        {
+            suffix = null;
+        }
+        buf.append(",'").append(title).append("':'");
+        if ( suffix == null )
+        {
+            buf.append("unknown");
+        }
+        else
+        {
+            bd = bd.setScale(2, RoundingMode.UP);
+            buf.append(bd).append(suffix);
+        }
+        buf.append('\'');
     }
 
     final String getDefaultDumpLocation()