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]
