You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by bo...@apache.org on 2016/03/15 18:44:47 UTC
[14/30] storm git commit: fix possible NPE & ClassCastException
fix possible NPE & ClassCastException
Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/faaacaee
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/faaacaee
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/faaacaee
Branch: refs/heads/master
Commit: faaacaee046bfa4f458c19cade678515a021d836
Parents: abe9b67
Author: 卫乐 <we...@taobao.com>
Authored: Tue Mar 1 11:47:51 2016 +0800
Committer: 卫乐 <we...@taobao.com>
Committed: Tue Mar 1 11:47:51 2016 +0800
----------------------------------------------------------------------
.../jvm/org/apache/storm/stats/StatsUtil.java | 23 +++++++++++++++-----
1 file changed, 17 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/storm/blob/faaacaee/storm-core/src/jvm/org/apache/storm/stats/StatsUtil.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/org/apache/storm/stats/StatsUtil.java b/storm-core/src/jvm/org/apache/storm/stats/StatsUtil.java
index efdf8e0..0ed2af9 100644
--- a/storm-core/src/jvm/org/apache/storm/stats/StatsUtil.java
+++ b/storm-core/src/jvm/org/apache/storm/stats/StatsUtil.java
@@ -578,7 +578,7 @@ public class StatsUtil {
Map ret = new HashMap();
putRawKV(ret, NUM_TASKS, task2comp.size());
putRawKV(ret, NUM_WORKERS, ((Set) getByKeyword(accData, WORKERS_SET)).size());
- putRawKV(ret, NUM_EXECUTORS, exec2nodePort.size());
+ putRawKV(ret, NUM_EXECUTORS, exec2nodePort != null ? exec2nodePort.size() : 0);
Map bolt2stats = getMapByKeyword(accData, BOLT_TO_STATS);
Map aggBolt2stats = new HashMap();
@@ -1339,11 +1339,18 @@ public class StatsUtil {
*/
private static Map filterSysStreams(Map stats, boolean includeSys) {
if (!includeSys) {
- for (Object win : stats.keySet()) {
- Map stream2stat = (Map) stats.get(win);
- for (Iterator itr = stream2stat.keySet().iterator(); itr.hasNext(); ) {
- Object key = itr.next();
- if (key instanceof String && Utils.isSystemId((String) key)) {
+ for (Iterator itr = stats.keySet().iterator(); itr.hasNext(); ) {
+ Object winOrStream = itr.next();
+ if (isWindow(winOrStream)) {
+ Map stream2stat = (Map) stats.get(winOrStream);
+ for (Iterator subItr = stream2stat.keySet().iterator(); subItr.hasNext(); ) {
+ Object key = subItr.next();
+ if (key instanceof String && Utils.isSystemId((String) key)) {
+ subItr.remove();
+ }
+ }
+ } else {
+ if (winOrStream instanceof String && Utils.isSystemId((String) winOrStream)) {
itr.remove();
}
}
@@ -1352,6 +1359,10 @@ public class StatsUtil {
return stats;
}
+ private static boolean isWindow(Object key) {
+ return key.equals("600") || key.equals("10800") || key.equals("86400") || key.equals(":all-time");
+ }
+
/**
* equals to clojure's: (merge-with (partial merge-with sum-or-0) acc-out spout-out)
*/