jacob-netguardians opened a new issue, #2963:
URL: https://github.com/apache/helix/issues/2963
### Describe the bug
Plain old NPE.
Depending on the order of the controllers in the set of existing
controllers, and especially depending on the position of the "leader"
controller in the collection, some controllers prior to the "leader" one may
still have their _helixMapper field set to null, resulting with an NPE while
filtering for leader.
### To Reproduce
Happens from time to time, depending on the ordering of the retrieved
controllers in the collection.
### Expected behavior
controllers without _helixMapper set cannot be leaders, so we could expect
them to be filtered out during the search.
Here is the code I propose to change:
```
public static GenericHelixController getLeaderController(String
clusterName) {
if (clusterName != null) {
ImmutableSet<GenericHelixController> controllers =
_helixControllerFactory.get(clusterName);
if (controllers != null) {
return controllers.stream().filter(controller ->
controller._helixManager.isLeader())
.findAny().orElse(null);
}
}
return null;
}
```
to
```
public static GenericHelixController getLeaderController(String
clusterName) {
if (clusterName != null) {
ImmutableSet<GenericHelixController> controllers =
_helixControllerFactory.get(clusterName);
if (controllers != null) {
return controllers.stream().filter(controller ->
controller._helixManager != null && controller._helixManager.isLeader())
.findAny().orElse(null);
}
}
return null;
}
```
--
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]