HASingletonElectionPolicySimple is just getting the current view from HAPartition and making a decision based on that, ignoring the fact that the service it's managing may not be running on all members of the cluster.
The HASingletonElectionPolicy API should be changed. The isMasterReplica method should take (List<ClusterNode> newReplicants, int newViewID) rather than HAPartition. The partition is provided via dependency injection at startup, no need to pass it in the method call. HASingletonElectionPolicySimple uses the provided replicants to make its decision, not the HAPartition view.