X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fexample%2FExampleActor.java;h=90bf121fd47c3ea823489feafd3cacbd1ea202eb;hb=refs%2Fchanges%2F20%2F9520%2F7;hp=35a2c98bd420ed56e18319a7388c477ab63bed13;hpb=fdab53ef9033fc83c812f7d3d6d3327d3d176f0f;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ExampleActor.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ExampleActor.java index 35a2c98bd4..90bf121fd4 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ExampleActor.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ExampleActor.java @@ -13,7 +13,10 @@ import akka.actor.Props; import akka.japi.Creator; import org.opendaylight.controller.cluster.example.messages.KeyValue; import org.opendaylight.controller.cluster.example.messages.KeyValueSaved; +import org.opendaylight.controller.cluster.example.messages.PrintRole; +import org.opendaylight.controller.cluster.example.messages.PrintState; import org.opendaylight.controller.cluster.raft.RaftActor; +import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; import java.util.HashMap; import java.util.Map; @@ -43,15 +46,25 @@ public class ExampleActor extends RaftActor { @Override public void onReceiveCommand(Object message){ if(message instanceof KeyValue){ - if(isLeader()) { String persistId = Long.toString(persistIdentifier++); - persistData(getSender(), persistId, message); + persistData(getSender(), persistId, (Payload) message); } else { - getLeader().forward(message, getContext()); + if(getLeader() != null) { + getLeader().forward(message, getContext()); + } } + + } else if (message instanceof PrintState) { + LOG.debug("State of the node:{} has entries={}, {}", + getId(), state.size(), getReplicatedLogState()); + + } else if (message instanceof PrintRole) { + LOG.debug("{} = {}, Peers={}", getId(), getRaftState(),getPeers()); + + } else { + super.onReceiveCommand(message); } - super.onReceiveCommand(message); } @Override protected void applyState(ActorRef clientActor, String identifier, @@ -65,6 +78,16 @@ public class ExampleActor extends RaftActor { } } + @Override protected Object createSnapshot() { + return state; + } + + @Override protected void applySnapshot(Object snapshot) { + state.clear(); + state.putAll((HashMap) snapshot); + LOG.debug("Snapshot applied to state :" + ((HashMap) snapshot).size()); + } + @Override public void onReceiveRecover(Object message) { super.onReceiveRecover(message); }