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;fp=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2Fpersisted%2FSnapshot.java;h=0acede1086ef20f3de26531cb7baf95a5f850507;hp=9812ac69d5c2be4194460c253f0316537cdb4c25;hb=8f7f6ed83f1ab21aa9ba1fb2f4f9fbad3a9bfa56;hpb=8874f15140aa20aa205b5469e02f319076d53860;ds=sidebyside 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 9812ac69d5..0acede1086 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,9 +22,8 @@ import org.opendaylight.controller.cluster.raft.messages.Payload; * * @author Thomas Pantelis */ -// Not final for mocking +// Not final and non-sealed for mocking public class Snapshot implements Serializable { - /** * Implementations of this interface are used as the state payload for a snapshot. * @@ -42,12 +41,25 @@ public class Snapshot implements Serializable { } } + @Deprecated(since = "7.0.0", forRemoval = true) + private static final class Legacy extends Snapshot implements LegacySerializable { + @java.io.Serial + private static final long serialVersionUID = 1L; + + Legacy(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) { + super(state, unAppliedEntries, lastIndex, lastTerm, lastAppliedIndex, lastAppliedTerm, electionTerm, + electionVotedFor, serverConfig); + } + } + @Deprecated(since = "7.0.0", forRemoval = true) private static final class Proxy implements Externalizable { @java.io.Serial private static final long serialVersionUID = 1L; - private Snapshot snapshot; + private Snapshot snapshot = null; // checkstyle flags the public modifier as redundant which really doesn't make sense since it clearly isn't // redundant. It is explicitly needed for Java serialization to be able to create instances via reflection. @@ -56,10 +68,6 @@ public class Snapshot implements Serializable { // For Externalizable } - Proxy(final Snapshot snapshot) { - this.snapshot = snapshot; - } - @Override public void writeExternal(final ObjectOutput out) throws IOException { out.writeLong(snapshot.lastIndex); @@ -91,7 +99,7 @@ public class Snapshot implements Serializable { ServerConfigurationPayload serverConfig = (ServerConfigurationPayload) in.readObject(); int size = in.readInt(); - List unAppliedEntries = new ArrayList<>(size); + var unAppliedEntries = new ArrayList(size); for (int i = 0; i < size; i++) { unAppliedEntries.add(new SimpleReplicatedLogEntry(in.readLong(), in.readLong(), (Payload) in.readObject())); @@ -99,7 +107,7 @@ public class Snapshot implements Serializable { State state = (State) in.readObject(); - snapshot = Snapshot.create(state, unAppliedEntries, lastIndex, lastTerm, lastAppliedIndex, lastAppliedTerm, + snapshot = new Legacy(state, unAppliedEntries, lastIndex, lastTerm, lastAppliedIndex, lastAppliedTerm, electionTerm, electionVotedFor, serverConfig); } @@ -180,12 +188,12 @@ public class Snapshot implements Serializable { } @java.io.Serial - private Object writeReplace() { + public final Object writeReplace() { return new SS(this); } @Override - public String toString() { + public final String toString() { return "Snapshot [lastIndex=" + lastIndex + ", lastTerm=" + lastTerm + ", lastAppliedIndex=" + lastAppliedIndex + ", lastAppliedTerm=" + lastAppliedTerm + ", unAppliedEntries size=" + unAppliedEntries.size() + ", state=" + state + ", electionTerm=" + electionTerm + ", electionVotedFor="