You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2020/07/07 12:18:43 UTC

[activemq-artemis] 05/07: ARTEMIS-2829 wrong return type for getDiskStoreUsage

This is an automated email from the ASF dual-hosted git repository.

clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git

commit fd207e75b0bb94005d953bfc780e7b8ee7c166c8
Author: Justin Bertram <jb...@apache.org>
AuthorDate: Mon Jun 29 09:12:09 2020 -0500

    ARTEMIS-2829 wrong return type for getDiskStoreUsage
    
    Since getDiskStoreUsage on the ActiveMQServerControl is converting a
    double to a long the value is always 0 in the management API. It should
    return a double instead.
---
 .../artemis/api/core/management/ActiveMQServerControl.java  |  4 ++--
 .../core/management/impl/ActiveMQServerControlImpl.java     | 13 ++-----------
 .../apache/activemq/artemis/core/server/ActiveMQServer.java |  2 ++
 .../artemis/core/server/impl/ActiveMQServerImpl.java        | 13 ++++++++-----
 .../management/ActiveMQServerControlUsingCoreTest.java      |  4 ++--
 5 files changed, 16 insertions(+), 20 deletions(-)

diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
index 90cd759..c1f6e1d 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
@@ -445,10 +445,10 @@ public interface ActiveMQServerControl {
    long getAddressMemoryUsage();
 
    /**
-    * Returns the bytes used by the disk store
+    * Returns the percentage of total disk store use
     */
    @Attribute(desc = DISK_STORE_USAGE_DESCRIPTION)
-   long getDiskStoreUsage();
+   double getDiskStoreUsage();
 
    /**
     * Returns the memory used by all the addresses on broker as a percentage of the global-max-size
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
index 30aff02..4b75a72 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
@@ -109,7 +109,6 @@ import org.apache.activemq.artemis.core.server.cluster.ha.HAPolicy;
 import org.apache.activemq.artemis.core.server.cluster.ha.LiveOnlyPolicy;
 import org.apache.activemq.artemis.core.server.cluster.ha.ScaleDownPolicy;
 import org.apache.activemq.artemis.core.server.cluster.ha.SharedStoreSlavePolicy;
-import org.apache.activemq.artemis.core.server.files.FileStoreMonitor;
 import org.apache.activemq.artemis.core.server.group.GroupingHandler;
 import org.apache.activemq.artemis.core.server.impl.Activation;
 import org.apache.activemq.artemis.core.server.impl.AddressInfo;
@@ -711,22 +710,14 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
    }
 
    @Override
-   public long getDiskStoreUsage() {
+   public double getDiskStoreUsage() {
       if (AuditLogger.isEnabled()) {
          AuditLogger.getDiskStoreUsage(this.server);
       }
       checkStarted();
       clearIO();
       try {
-         //this should not happen but if it does, return -1 to highlight it is not working
-         if (server.getPagingManager() == null) {
-            return -1L;
-         }
-
-         long usableSpace = server.getPagingManager().getDiskUsableSpace();
-         long totalSpace = server.getPagingManager().getDiskTotalSpace();
-
-         return (long) FileStoreMonitor.calculateUsage(usableSpace, totalSpace);
+         return server.getDiskStoreUsage();
       } finally {
          blockOnIO();
       }
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServer.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServer.java
index 3bbc721..d3b8ea5 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServer.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServer.java
@@ -889,4 +889,6 @@ public interface ActiveMQServer extends ServiceComponent {
    void removeAddressInfo(SimpleString address, SecurityAuth auth, boolean force) throws Exception;
 
    String getInternalNamingPrefix();
+
+   double getDiskStoreUsage();
 }
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
index 6d78f16..41edad9 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
@@ -3086,16 +3086,19 @@ public class ActiveMQServerImpl implements ActiveMQServer {
             builder.register(BrokerMetricNames.TOTAL_CONNECTION_COUNT, this, metrics -> Double.valueOf(getTotalConnectionCount()), ActiveMQServerControl.TOTAL_CONNECTION_COUNT_DESCRIPTION);
             builder.register(BrokerMetricNames.ADDRESS_MEMORY_USAGE, this, metrics -> Double.valueOf(messagingServerControl.getAddressMemoryUsage()), ActiveMQServerControl.ADDRESS_MEMORY_USAGE_DESCRIPTION);
             builder.register(BrokerMetricNames.ADDRESS_MEMORY_USAGE_PERCENTAGE, this, metrics -> Double.valueOf(messagingServerControl.getAddressMemoryUsagePercentage()), ActiveMQServerControl.ADDRESS_MEMORY_USAGE_PERCENTAGE_DESCRIPTION);
-            builder.register(BrokerMetricNames.DISK_STORE_USAGE, this, metrics -> Double.valueOf(calculateDiskStoreUsage()), ActiveMQServerControl.DISK_STORE_USAGE_DESCRIPTION);
+            builder.register(BrokerMetricNames.DISK_STORE_USAGE, this, metrics -> Double.valueOf(getDiskStoreUsage()), ActiveMQServerControl.DISK_STORE_USAGE_DESCRIPTION);
          });
       }
    }
 
-   private double calculateDiskStoreUsage() {
-      long usableSpace = getPagingManager().getDiskUsableSpace();
-      long totalSpace = getPagingManager().getDiskTotalSpace();
+   @Override
+   public double getDiskStoreUsage() {
+      //this should not happen but if it does, return -1 to highlight it is not working
+      if (getPagingManager() == null) {
+         return -1L;
+      }
 
-      return FileStoreMonitor.calculateUsage(usableSpace, totalSpace);
+      return FileStoreMonitor.calculateUsage(getPagingManager().getDiskUsableSpace(), getPagingManager().getDiskTotalSpace());
    }
 
    private void unregisterMeters() {
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
index 2c32c25..4b8138b 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
@@ -764,9 +764,9 @@ public class ActiveMQServerControlUsingCoreTest extends ActiveMQServerControlTes
          }
 
          @Override
-         public long getDiskStoreUsage() {
+         public double getDiskStoreUsage() {
             try {
-               return (Long) proxy.invokeOperation("getDiskStoreUsage");
+               return (Double) proxy.invokeOperation("getDiskStoreUsage");
             } catch (Exception e) {
                e.printStackTrace();
             }