X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft-example%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fexample%2FExampleActor.java;h=2523a640b2753d7004b5d92215bb5254a2527d82;hp=5ab3f69bea994d60644cca47b9694205ae2ab039;hb=93e6f3bfc003d4ce2d968761dff963615a0b799d;hpb=608760751ce7fcf4e84e86a8b33d43bc1d9984d6 diff --git a/opendaylight/md-sal/sal-akka-raft-example/src/main/java/org/opendaylight/controller/cluster/example/ExampleActor.java b/opendaylight/md-sal/sal-akka-raft-example/src/main/java/org/opendaylight/controller/cluster/example/ExampleActor.java index 5ab3f69bea..2523a640b2 100644 --- a/opendaylight/md-sal/sal-akka-raft-example/src/main/java/org/opendaylight/controller/cluster/example/ExampleActor.java +++ b/opendaylight/md-sal/sal-akka-raft-example/src/main/java/org/opendaylight/controller/cluster/example/ExampleActor.java @@ -33,11 +33,20 @@ import org.opendaylight.controller.cluster.raft.RaftState; import org.opendaylight.controller.cluster.raft.base.messages.CaptureSnapshotReply; import org.opendaylight.controller.cluster.raft.behaviors.Leader; import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; +import org.opendaylight.yangtools.concepts.Identifier; +import org.opendaylight.yangtools.util.AbstractStringIdentifier; /** * A sample actor showing how the RaftActor is to be extended */ public class ExampleActor extends RaftActor implements RaftActorRecoveryCohort, RaftActorSnapshotCohort { + private static final class PayloadIdentifier extends AbstractStringIdentifier { + private static final long serialVersionUID = 1L; + + PayloadIdentifier(final long identifier) { + super(String.valueOf(identifier)); + } + } private final Map state = new HashMap<>(); @@ -47,7 +56,7 @@ public class ExampleActor extends RaftActor implements RaftActorRecoveryCohort, public ExampleActor(String id, Map peerAddresses, Optional configParams) { - super(id, peerAddresses, configParams); + super(id, peerAddresses, configParams, (short)0); setPersistence(true); roleChangeNotifier = createRoleChangeNotifier(id); } @@ -57,11 +66,11 @@ public class ExampleActor extends RaftActor implements RaftActorRecoveryCohort, return Props.create(ExampleActor.class, id, peerAddresses, configParams); } - @Override public void onReceiveCommand(Object message) throws Exception{ + @Override + protected void handleNonRaftCommand(Object message) { if(message instanceof KeyValue){ if(isLeader()) { - String persistId = Long.toString(persistIdentifier++); - persistData(getSender(), persistId, (Payload) message); + persistData(getSender(), new PayloadIdentifier(persistIdentifier++), (Payload) message); } else { if(getLeader() != null) { getLeader().forward(message, getContext()); @@ -79,17 +88,17 @@ public class ExampleActor extends RaftActor implements RaftActorRecoveryCohort, if (getRaftState() == RaftState.Leader || getRaftState() == RaftState.IsolatedLeader) { final String followers = ((Leader)this.getCurrentBehavior()).printFollowerStates(); LOG.debug("{} = {}, Peers={}, followers={}", getId(), getRaftState(), - getRaftActorContext().getPeerAddresses().keySet(), followers); + getRaftActorContext().getPeerIds(), followers); } else { LOG.debug("{} = {}, Peers={}", getId(), getRaftState(), - getRaftActorContext().getPeerAddresses().keySet()); + getRaftActorContext().getPeerIds()); } } } else { - super.onReceiveCommand(message); + super.handleNonRaftCommand(message); } } @@ -110,8 +119,8 @@ public class ExampleActor extends RaftActor implements RaftActorRecoveryCohort, return roleChangeNotifier; } - @Override protected void applyState(final ActorRef clientActor, final String identifier, - final Object data) { + @Override + protected void applyState(final ActorRef clientActor, final Identifier identifier, final Object data) { if(data instanceof KeyValue){ KeyValue kv = (KeyValue) data; state.put(kv.getKey(), kv.getValue()); @@ -145,7 +154,7 @@ public class ExampleActor extends RaftActor implements RaftActorRecoveryCohort, } } - private ByteString fromObject(Object snapshot) throws Exception { + private static ByteString fromObject(Object snapshot) throws Exception { ByteArrayOutputStream b = null; ObjectOutputStream o = null; try { @@ -165,7 +174,7 @@ public class ExampleActor extends RaftActor implements RaftActorRecoveryCohort, } } - private Object toObject(byte [] bs) throws ClassNotFoundException, IOException { + private static Object toObject(byte [] bs) throws ClassNotFoundException, IOException { Object obj = null; ByteArrayInputStream bis = null; ObjectInputStream ois = null; @@ -188,10 +197,6 @@ public class ExampleActor extends RaftActor implements RaftActorRecoveryCohort, } - @Override public void onReceiveRecover(Object message)throws Exception { - super.onReceiveRecover(message); - } - @Override public String persistenceId() { return getId(); } @@ -226,4 +231,9 @@ public class ExampleActor extends RaftActor implements RaftActorRecoveryCohort, protected RaftActorSnapshotCohort getRaftActorSnapshotCohort() { return this; } + + @Override + public byte[] getRestoreFromSnapshot() { + return null; + } }