X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2Fpersisted%2FSnapshot.java;h=091009e2bd31e3898af14552874bf6cc17597898;hb=refs%2Fchanges%2F14%2F82314%2F25;hp=1763ad3fbe345b404c8fec726bab497c5db48c40;hpb=2faf656bf68dd3843fd59520b27a7ec2abbdcc68;p=controller.git 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 1763ad3fbe..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); } @@ -165,7 +175,6 @@ public class Snapshot implements Serializable { return serverConfig; } - @SuppressWarnings("static-method") private Object writeReplace() { return new Proxy(this); }