You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by et...@apache.org on 2020/03/13 14:25:09 UTC

[storm] branch master updated: [STORM-3598] Fix UI visualization NullPointException

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

ethanli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/storm.git


The following commit(s) were added to refs/heads/master by this push:
     new 99a1b96  [STORM-3598] Fix UI visualization NullPointException
     new 4bc08c7  Merge pull request #3224 from Ethanlm/STORM-3598
99a1b96 is described below

commit 99a1b96368c080f1dc06c6d1b996f6bfa5aabc2b
Author: Ethan Li <et...@gmail.com>
AuthorDate: Wed Mar 11 11:38:14 2020 -0500

    [STORM-3598] Fix UI visualization NullPointException
---
 .../java/org/apache/storm/stats/StatsUtil.java     | 24 ++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/storm-server/src/main/java/org/apache/storm/stats/StatsUtil.java b/storm-server/src/main/java/org/apache/storm/stats/StatsUtil.java
index acca1f9..717a8cc 100644
--- a/storm-server/src/main/java/org/apache/storm/stats/StatsUtil.java
+++ b/storm-server/src/main/java/org/apache/storm/stats/StatsUtil.java
@@ -1819,7 +1819,7 @@ public class StatsUtil {
     }
 
     /**
-     * this method merges 2 two-level-deep maps, which is different from mergeWithSum, and we expect the two maps have the same keys.
+     * this method merges 2 two-level-deep maps.
      */
     private static <K> Map<String, Map<K, List>> mergeWithAddPair(Map<String, Map<K, List>> m1,
                                                                   Map<String, Map<K, List>> m2) {
@@ -1847,15 +1847,23 @@ public class StatsUtil {
                 for (K kk : mm1.keySet()) {
                     List seq1 = mm1.get(kk);
                     List seq2 = mm2.get(kk);
-                    List sums = new ArrayList();
-                    for (int i = 0; i < seq1.size(); i++) {
-                        if (seq1.get(i) instanceof Long) {
-                            sums.add(((Number) seq1.get(i)).longValue() + ((Number) seq2.get(i)).longValue());
-                        } else {
-                            sums.add(((Number) seq1.get(i)).doubleValue() + ((Number) seq2.get(i)).doubleValue());
+                    if (seq1 == null && seq2 == null) {
+                        continue;
+                    } else if (seq1 == null) {
+                        tmp.put(kk, seq2);
+                    } else if (seq2 == null) {
+                        tmp.put(kk, seq1);
+                    } else {
+                        List sums = new ArrayList();
+                        for (int i = 0; i < seq1.size(); i++) {
+                            if (seq1.get(i) instanceof Long) {
+                                sums.add(((Number) seq1.get(i)).longValue() + ((Number) seq2.get(i)).longValue());
+                            } else {
+                                sums.add(((Number) seq1.get(i)).doubleValue() + ((Number) seq2.get(i)).doubleValue());
+                            }
                         }
+                        tmp.put(kk, sums);
                     }
-                    tmp.put(kk, sums);
                 }
                 ret.put(k, tmp);
             }