Fix NPE exception in CurrentStateOutput when getting currentstate for a task.
Project: http://git-wip-us.apache.org/repos/asf/helix/repo Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/47d790e0 Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/47d790e0 Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/47d790e0 Branch: refs/heads/master Commit: 47d790e0c6ac388ee38b829bbc9311d21d001705 Parents: 13fac7c Author: Lei Xia <l...@linkedin.com> Authored: Tue Apr 3 14:01:07 2018 -0700 Committer: Lei Xia <l...@linkedin.com> Committed: Mon Apr 16 11:22:40 2018 -0700 ---------------------------------------------------------------------- .../helix/controller/stages/CurrentStateOutput.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/helix/blob/47d790e0/helix-core/src/main/java/org/apache/helix/controller/stages/CurrentStateOutput.java ---------------------------------------------------------------------- diff --git a/helix-core/src/main/java/org/apache/helix/controller/stages/CurrentStateOutput.java b/helix-core/src/main/java/org/apache/helix/controller/stages/CurrentStateOutput.java index ce0880e..4ebef97 100644 --- a/helix-core/src/main/java/org/apache/helix/controller/stages/CurrentStateOutput.java +++ b/helix-core/src/main/java/org/apache/helix/controller/stages/CurrentStateOutput.java @@ -373,9 +373,15 @@ public class CurrentStateOutput { if (!currentPartitionCount.containsKey(participant)) { currentPartitionCount.put(participant, 0); } - String currState = participantMap.getValue().toString(); - if (participantMap.getValue() instanceof Message) { - currState = ((Message) participantMap.getValue()).getToState(); + + Object curStateObj = participantMap.getValue(); + String currState = null; + if (curStateObj != null) { + if (curStateObj instanceof Message) { + currState = ((Message) curStateObj).getToState(); + } else if (curStateObj instanceof String) { + currState = curStateObj.toString(); + } } if ((currState != null && currState.equals(state)) || (currState == null && state == null)) { currentPartitionCount.put(participant, currentPartitionCount.get(participant) + 1);