X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2Fpersisted%2FSnapshot.java;h=091009e2bd31e3898af14552874bf6cc17597898;hp=aa3500e33a1789ed10ade94f8a3cbc59a23836f7;hb=refs%2Fchanges%2F14%2F82314%2F25;hpb=a66b0a0f12639e4cfb43bb92602407f09b849c3f diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/Snapshot.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/Snapshot.java index aa3500e33a..091009e2bd 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/Snapshot.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/Snapshot.java @@ -22,6 +22,7 @@ import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payloa * * @author Thomas Pantelis */ +// Not final for mocking public class Snapshot implements Serializable { /** @@ -30,6 +31,15 @@ public class Snapshot implements Serializable { * @author Thomas Pantelis */ public interface State extends Serializable { + /** + * Indicate whether the snapshot requires migration, i.e. a new snapshot should be created after recovery. + * Default implementation returns false, i.e. do not re-snapshot. + * + * @return True if complete recovery based upon this snapshot should trigger a new snapshot. + */ + default boolean needsMigration() { + return false; + } } private static final class Proxy implements Externalizable { @@ -108,9 +118,9 @@ public class Snapshot implements Serializable { private final String electionVotedFor; private final ServerConfigurationPayload serverConfig; - private Snapshot(State state, List unAppliedEntries, long lastIndex, long lastTerm, - long lastAppliedIndex, long lastAppliedTerm, long electionTerm, String electionVotedFor, - ServerConfigurationPayload serverConfig) { + Snapshot(final State state, final List unAppliedEntries, final long lastIndex, + final long lastTerm, final long lastAppliedIndex, final long lastAppliedTerm, final long electionTerm, + final String electionVotedFor, final ServerConfigurationPayload serverConfig) { this.state = state; this.unAppliedEntries = unAppliedEntries; this.lastIndex = lastIndex; @@ -122,9 +132,9 @@ public class Snapshot implements Serializable { this.serverConfig = serverConfig; } - public static Snapshot create(State state, List entries, long lastIndex, long lastTerm, - long lastAppliedIndex, long lastAppliedTerm, long electionTerm, String electionVotedFor, - ServerConfigurationPayload serverConfig) { + public static Snapshot create(final State state, final List entries, final long lastIndex, + final long lastTerm, final long lastAppliedIndex, final long lastAppliedTerm, final long electionTerm, + final String electionVotedFor, final ServerConfigurationPayload serverConfig) { return new Snapshot(state, entries, lastIndex, lastTerm, lastAppliedIndex, lastAppliedTerm, electionTerm, electionVotedFor, serverConfig); }