import org.opendaylight.controller.cluster.raft.base.messages.Replicate;
import org.opendaylight.controller.cluster.raft.base.messages.SwitchBehavior;
import org.opendaylight.controller.cluster.raft.behaviors.AbstractLeader;
+import org.opendaylight.controller.cluster.raft.behaviors.AbstractRaftActorBehavior;
import org.opendaylight.controller.cluster.raft.behaviors.DelegatingRaftActorBehavior;
import org.opendaylight.controller.cluster.raft.behaviors.Follower;
import org.opendaylight.controller.cluster.raft.behaviors.RaftActorBehavior;
}
protected void changeCurrentBehavior(RaftActorBehavior newBehavior){
+ if(getCurrentBehavior() != null) {
+ try {
+ getCurrentBehavior().close();
+ } catch(Exception e) {
+ LOG.warn("{}: Error closing behavior {}", persistence(), getCurrentBehavior(), e);
+ }
+ }
+
reusableBehaviorStateHolder.init(getCurrentBehavior());
setCurrentBehavior(newBehavior);
handleBehaviorChange(reusableBehaviorStateHolder, getCurrentBehavior());
} else if (message instanceof ApplyJournalEntries) {
ApplyJournalEntries applyEntries = (ApplyJournalEntries) message;
if(LOG.isDebugEnabled()) {
- LOG.debug("{}: Persisting ApplyLogEntries with index={}", persistenceId(), applyEntries.getToIndex());
+ LOG.debug("{}: Persisting ApplyJournalEntries with index={}", persistenceId(), applyEntries.getToIndex());
}
persistence().persist(applyEntries, NoopProcedure.instance());
if(leadershipTransferInProgress != null) {
leadershipTransferInProgress.onNewLeader(currentBehavior.getLeaderId());
}
+
+ serverConfigurationSupport.onNewLeader(currentBehavior.getLeaderId());
}
if (roleChangeNotifier.isPresent() &&
@Override
public RaftActorBehavior get() {
if(this.message instanceof SwitchBehavior){
- return ((SwitchBehavior) message).getNewState().createBehavior(getRaftActorContext());
+ return AbstractRaftActorBehavior.createBehavior(context, ((SwitchBehavior) message).getNewState());
}
return currentBehavior.handleMessage(sender, message);
}