- boolean localServerChangedToNonVoting = Boolean.FALSE.equals(getOperation().
- getServerVotingStatusMap().get(raftActor.getRaftActorContext().getId()));
- if(succeeded && localServerChangedToNonVoting && raftActor.isLeader()) {
- raftActor.initiateLeadershipTransfer(new RaftActorLeadershipTransferCohort.OnComplete() {
- @Override
- public void onSuccess(ActorRef raftActorRef, ActorRef replyTo) {
- LOG.debug("{}: leader transfer succeeded after change to non-voting", raftActor.persistenceId());
- ensureFollowerState(raftActor);
- }
-
- @Override
- public void onFailure(ActorRef raftActorRef, ActorRef replyTo) {
- LOG.debug("{}: leader transfer failed after change to non-voting", raftActor.persistenceId());
- ensureFollowerState(raftActor);
- }
-
- private void ensureFollowerState(RaftActor raftActor) {
- // Whether or not leadership transfer succeeded, we have to step down as leader and
- // switch to Follower so ensure that.
- if(raftActor.getRaftState() != RaftState.Follower) {
- raftActor.initializeBehavior();
- }
- }
- });
+ boolean localServerChangedToNonVoting = Boolean.FALSE.equals(getOperation()
+ .getServerVotingStatusMap().get(raftActor.getRaftActorContext().getId()));
+ if (succeeded && localServerChangedToNonVoting) {
+ LOG.debug("Leader changed to non-voting - trying leadership transfer");
+ raftActor.becomeNonVoting();
+ } else if (raftActor.isLeader()) {
+ raftActor.onVotingStateChangeComplete();