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

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


The following commit(s) were added to refs/heads/2.1.x-branch by this push:
     new 03af787  [STORM-3598] Fix UI visualization NullPointException
03af787 is described below

commit 03af7876f50cfb824e5925f64a40910dd81e485d
Author: Ethan Li <[email protected]>
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 05d4edd..15233f3 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);
             }

Reply via email to