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 2017/05/02 17:00:58 UTC

[3/4] activemq-artemis git commit: ARTEMIS-1135: Prevent overflow in `DayCounter`

ARTEMIS-1135: Prevent overflow in `DayCounter`

Use `long` array for hourly counters instead of `int` array.
Prevents overflow when the number of new messages (a `long`) is added.
Fixes one of the "Implicit narrowing conversion in compound assignment"
alerts on https://lgtm.com/projects/g/apache/activemq-artemis/alerts.


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/52a5b855
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/52a5b855
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/52a5b855

Branch: refs/heads/master
Commit: 52a5b85557e7bb069a1ae3d56669a11f3620b31a
Parents: b998a8b
Author: Aditya Sharad <ad...@semmle.com>
Authored: Sat Apr 29 15:52:08 2017 +0100
Committer: Clebert Suconic <cl...@apache.org>
Committed: Tue May 2 13:00:46 2017 -0400

----------------------------------------------------------------------
 .../artemis/api/core/management/DayCounterInfo.java     | 10 +++++-----
 .../artemis/core/messagecounter/MessageCounter.java     | 12 ++++++------
 .../core/messagecounter/impl/MessageCounterHelper.java  |  2 +-
 3 files changed, 12 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/52a5b855/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/DayCounterInfo.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/DayCounterInfo.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/DayCounterInfo.java
index 4cb124b..1dce276 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/DayCounterInfo.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/DayCounterInfo.java
@@ -32,7 +32,7 @@ public final class DayCounterInfo {
 
    private final String date;
 
-   private final int[] counters;
+   private final long[] counters;
 
    // Static --------------------------------------------------------
 
@@ -41,7 +41,7 @@ public final class DayCounterInfo {
       JsonArrayBuilder counters = JsonLoader.createArrayBuilder();
       for (DayCounterInfo info : infos) {
          JsonArrayBuilder counter = JsonLoader.createArrayBuilder();
-         for (int c : info.getCounters()) {
+         for (long c : info.getCounters()) {
             counter.add(c);
          }
          JsonObjectBuilder dci = JsonLoader.createObjectBuilder().add("date", info.getDate()).add("counters", counter);
@@ -63,7 +63,7 @@ public final class DayCounterInfo {
 
          JsonObject counter = (JsonObject) dayCounters.get(i);
          JsonArray hour = counter.getJsonArray("counters");
-         int[] hourCounters = new int[24];
+         long[] hourCounters = new long[24];
          for (int j = 0; j < 24; j++) {
             hourCounters[j] = hour.getInt(j);
          }
@@ -75,7 +75,7 @@ public final class DayCounterInfo {
 
    // Constructors --------------------------------------------------
 
-   public DayCounterInfo(final String date, final int[] counters) {
+   public DayCounterInfo(final String date, final long[] counters) {
       this.date = date;
       this.counters = counters;
    }
@@ -93,7 +93,7 @@ public final class DayCounterInfo {
     * Returns a 24-length array corresponding to the number of messages added to the queue
     * for the given hour of the day.
     */
-   public int[] getCounters() {
+   public long[] getCounters() {
       return counters;
    }
 }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/52a5b855/artemis-server/src/main/java/org/apache/activemq/artemis/core/messagecounter/MessageCounter.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/messagecounter/MessageCounter.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/messagecounter/MessageCounter.java
index 522445d..3ee5e4a 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/messagecounter/MessageCounter.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/messagecounter/MessageCounter.java
@@ -395,7 +395,7 @@ public class MessageCounter {
 
       GregorianCalendar date = null;
 
-      int[] counters = new int[DayCounter.HOURS];
+      long[] counters = new long[DayCounter.HOURS];
 
       /**
        * Constructor
@@ -415,17 +415,17 @@ public class MessageCounter {
          for (int i = 0; i < DayCounter.HOURS; i++) {
             if (i < hour) {
                if (isStartDay) {
-                  counters[i] = -1;
+                  counters[i] = -1L;
                } else {
-                  counters[i] = 0;
+                  counters[i] = 0L;
                }
             } else {
-               counters[i] = -1;
+               counters[i] = -1L;
             }
          }
 
          // set the array element of the current hour to '0'
-         counters[hour] = 0;
+         counters[hour] = 0L;
       }
 
       /**
@@ -437,7 +437,7 @@ public class MessageCounter {
          return (GregorianCalendar) date.clone();
       }
 
-      public int[] getCounters() {
+      public long[] getCounters() {
          return counters;
       }
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/52a5b855/artemis-server/src/main/java/org/apache/activemq/artemis/core/messagecounter/impl/MessageCounterHelper.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/messagecounter/impl/MessageCounterHelper.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/messagecounter/impl/MessageCounterHelper.java
index 1688985..c8fe282 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/messagecounter/impl/MessageCounterHelper.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/messagecounter/impl/MessageCounterHelper.java
@@ -38,7 +38,7 @@ public class MessageCounterHelper {
       DayCounterInfo[] infos = new DayCounterInfo[history.size()];
       for (int i = 0; i < infos.length; i++) {
          DayCounter dayCounter = history.get(i);
-         int[] counters = dayCounter.getCounters();
+         long[] counters = dayCounter.getCounters();
          GregorianCalendar date = dayCounter.getDate();
 
          DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT);