GrantPSpencer opened a new issue, #3079:
URL: https://github.com/apache/helix/issues/3079

   ### Describe the bug
   An NPE occurs in the task pipeline due to the [difference between two 
maps](https://github.com/apache/helix/blob/3d5096764b3cee4187c4d53822a10afdcea3c35c/helix-core/src/main/java/org/apache/helix/controller/dataproviders/WorkflowControllerDataProvider.java#L188).
 
   
   _participantActiveTaskCount will be populated with all live and enabled 
instances as part of resetActiveTaskCount. If this is first populated when node 
X is already disabled (e.g., evacuate), then it will not contain node X. 
However, if that node X still has a task current state on it, then 
`currentStateOutput.getPartitionCountWithPendingState` will return a map with 
that key.  In `fillActiveTaskCount(..)`, we iterate over the keys in the 
current state map and get value of that key in both the that map and the 
_participantActiveTaskCount (live+enabled) map. This will cause 
_participantActiveTaskCount.get(participant) to return null and throw an NPE 
when we attempt to perform arithmetic (+ operator). 
   
   Fix should either be to safely handle this mismatch or prevent mismatch 
entirely 
   
   
   ### To Reproduce
   Did not verify, but likely: 
   1. Initiate evacuate on a node that has an active task current state in 
either init or running
   2. Reset controller so that it rebuilds `_participantActiveTaskCount`
   3. NPE will then occur as there are different keys in the current state map 
and the map generated from live and enabled instances 
   
   ### Expected behavior
   Do not throw NPE on keyset mismatch 
   
   ### Additional context
   Add any other context about the problem here.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to