From 8874f15140aa20aa205b5469e02f319076d53860 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 2 Dec 2022 09:10:07 +0100 Subject: [PATCH] Switch to ARGON raft version We have new, more efficient serialization format. Switch to using it and deprecate old proxies. JIRA: CONTROLLER-2064 Change-Id: Ie549f08d62953ff6019ff915b12d0d4fedb1d3a0 Signed-off-by: Robert Varga --- .../controller/cluster/raft/RaftVersions.java | 2 +- .../messages/EmptyExternalizableProxy.java | 1 + .../raft/base/messages/TimeoutNow.java | 6 +----- .../raft/behaviors/FollowerIdentifier.java | 15 ++++++++----- .../raft/client/messages/Shutdown.java | 6 +----- .../raft/messages/InstallSnapshotReply.java | 5 ++++- .../cluster/raft/messages/RequestVote.java | 5 ++++- .../raft/messages/RequestVoteReply.java | 5 ++++- .../raft/persisted/ApplyJournalEntries.java | 6 +++++- .../cluster/raft/persisted/DeleteEntries.java | 6 +++++- .../controller/cluster/raft/persisted/LE.java | 7 +++++++ .../cluster/raft/persisted/NoopPayload.java | 6 +++++- .../persisted/SimpleReplicatedLogEntry.java | 13 +++++++----- .../cluster/raft/persisted/Snapshot.java | 9 ++++++-- .../raft/persisted/UpdateElectionTerm.java | 7 ++++++- .../raft/base/messages/TimeoutNowTest.java | 2 +- .../behaviors/FollowerIdentifierTest.java | 2 +- .../raft/client/messages/ShutdownTest.java | 2 +- .../raft/messages/AppendEntriesReplyTest.java | 2 +- .../raft/messages/AppendEntriesTest.java | 4 ++-- .../messages/InstallSnapshotReplyTest.java | 2 +- .../raft/messages/InstallSnapshotTest.java | 21 +++++++++++++------ .../raft/messages/RequestVoteReplyTest.java | 2 +- .../raft/messages/RequestVoteTest.java | 2 +- .../persisted/ApplyJournalEntriesTest.java | 2 +- .../raft/persisted/DeleteEntriesTest.java | 2 +- .../raft/persisted/NoopPayloadTest.java | 2 +- .../SimpleReplicatedLogEntryTest.java | 2 +- .../cluster/raft/persisted/SnapshotTest.java | 4 ++-- .../persisted/UpdateElectionTermTest.java | 2 +- 30 files changed, 100 insertions(+), 52 deletions(-) diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftVersions.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftVersions.java index 646a57a3fe..1140e7449f 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftVersions.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftVersions.java @@ -21,7 +21,7 @@ public final class RaftVersions { public static final short BORON_VERSION = 3; public static final short FLUORINE_VERSION = 4; public static final short ARGON_VERSION = 5; - public static final short CURRENT_VERSION = FLUORINE_VERSION; + public static final short CURRENT_VERSION = ARGON_VERSION; private RaftVersions() { diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/EmptyExternalizableProxy.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/EmptyExternalizableProxy.java index 67f3ed92ae..96c25d56d3 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/EmptyExternalizableProxy.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/EmptyExternalizableProxy.java @@ -19,6 +19,7 @@ import java.io.ObjectOutput; * * @author Thomas Pantelis */ +@Deprecated(since = "7.0.0", forRemoval = true) public abstract class EmptyExternalizableProxy implements Externalizable { private static final long serialVersionUID = 1L; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/TimeoutNow.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/TimeoutNow.java index 780487b6ab..be3b0b5ffd 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/TimeoutNow.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/TimeoutNow.java @@ -30,11 +30,7 @@ public final class TimeoutNow implements Serializable, ControlMessage { return INSTANCE; } - @java.io.Serial - private Object writeReplace() { - return new Proxy(); - } - + @Deprecated(since = "7.0.0", forRemoval = true) private static class Proxy extends EmptyExternalizableProxy { @java.io.Serial private static final long serialVersionUID = 1L; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerIdentifier.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerIdentifier.java index 32c6da4b52..d961f84b0c 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerIdentifier.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerIdentifier.java @@ -19,17 +19,21 @@ import org.opendaylight.yangtools.util.AbstractStringIdentifier; * @author Thomas Pantelis */ class FollowerIdentifier extends AbstractStringIdentifier { + @java.io.Serial private static final long serialVersionUID = 1L; - FollowerIdentifier(String followerId) { + FollowerIdentifier(final String followerId) { super(followerId); } + @java.io.Serial private Object writeReplace() { - return new Proxy(this); + return new FI(getValue()); } + @Deprecated(since = "7.0.0", forRemoval = true) private static class Proxy implements Externalizable { + @java.io.Serial private static final long serialVersionUID = 1L; private FollowerIdentifier identifier; @@ -40,20 +44,21 @@ class FollowerIdentifier extends AbstractStringIdentifier { public Proxy() { } - Proxy(FollowerIdentifier identifier) { + Proxy(final FollowerIdentifier identifier) { this.identifier = identifier; } @Override - public void writeExternal(ObjectOutput out) throws IOException { + public void writeExternal(final ObjectOutput out) throws IOException { out.writeObject(identifier.getValue()); } @Override - public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { + public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException { identifier = new FollowerIdentifier((String) in.readObject()); } + @java.io.Serial private Object readResolve() { return identifier; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/Shutdown.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/Shutdown.java index 29f291f5cf..2f2ff47934 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/Shutdown.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/Shutdown.java @@ -33,11 +33,7 @@ public final class Shutdown implements Serializable, ControlMessage { return INSTANCE; } - @java.io.Serial - private Object writeReplace() { - return new Proxy(); - } - + @Deprecated(since = "7.0.0", forRemoval = true) private static class Proxy extends EmptyExternalizableProxy { @java.io.Serial private static final long serialVersionUID = 1L; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotReply.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotReply.java index 693fe7e7b8..16cc900701 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotReply.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotReply.java @@ -50,10 +50,12 @@ public final class InstallSnapshotReply extends AbstractRaftRPC { @Override Object writeReplace() { - return new Proxy(this); + return new IR(this); } + @Deprecated(since = "7.0.0", forRemoval = true) private static class Proxy implements Externalizable { + @java.io.Serial private static final long serialVersionUID = 1L; private InstallSnapshotReply installSnapshotReply; @@ -86,6 +88,7 @@ public final class InstallSnapshotReply extends AbstractRaftRPC { installSnapshotReply = new InstallSnapshotReply(term, followerId, chunkIndex, success); } + @java.io.Serial private Object readResolve() { return installSnapshotReply; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVote.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVote.java index b23c76d06f..72d1496951 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVote.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVote.java @@ -57,10 +57,12 @@ public final class RequestVote extends AbstractRaftRPC { @Override Object writeReplace() { - return new Proxy(this); + return new RV(this); } + @Deprecated(since = "7.0.0", forRemoval = true) private static class Proxy implements Externalizable { + @java.io.Serial private static final long serialVersionUID = 1L; private RequestVote requestVote; @@ -93,6 +95,7 @@ public final class RequestVote extends AbstractRaftRPC { requestVote = new RequestVote(term, candidateId, lastLogIndex, lastLogTerm); } + @java.io.Serial private Object readResolve() { return requestVote; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteReply.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteReply.java index 2554c17fd8..7bfb7b68f0 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteReply.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteReply.java @@ -34,10 +34,12 @@ public final class RequestVoteReply extends AbstractRaftRPC { @Override Object writeReplace() { - return new Proxy(this); + return new VR(this); } + @Deprecated(since = "7.0.0", forRemoval = true) private static class Proxy implements Externalizable { + @java.io.Serial private static final long serialVersionUID = 1L; private RequestVoteReply requestVoteReply; @@ -66,6 +68,7 @@ public final class RequestVoteReply extends AbstractRaftRPC { requestVoteReply = new RequestVoteReply(term, voteGranted); } + @java.io.Serial private Object readResolve() { return requestVoteReply; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/ApplyJournalEntries.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/ApplyJournalEntries.java index 3c0a8ac700..ad334f4c15 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/ApplyJournalEntries.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/ApplyJournalEntries.java @@ -23,7 +23,9 @@ import java.io.Serializable; * @author Thomas Pantelis */ public class ApplyJournalEntries implements Serializable, ControlMessage { + @Deprecated(since = "7.0.0", forRemoval = true) private static final class Proxy implements Externalizable { + @java.io.Serial private static final long serialVersionUID = 1L; private ApplyJournalEntries applyEntries; @@ -49,11 +51,13 @@ public class ApplyJournalEntries implements Serializable, ControlMessage { applyEntries = new ApplyJournalEntries(in.readLong()); } + @java.io.Serial private Object readResolve() { return applyEntries; } } + @java.io.Serial private static final long serialVersionUID = 1L; private final long toIndex; @@ -67,7 +71,7 @@ public class ApplyJournalEntries implements Serializable, ControlMessage { } private Object writeReplace() { - return new Proxy(this); + return new AJE(this); } @Override diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/DeleteEntries.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/DeleteEntries.java index 57f5af3a03..b4b4546504 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/DeleteEntries.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/DeleteEntries.java @@ -19,7 +19,9 @@ import java.io.Serializable; * @author Thomas Pantelis */ public class DeleteEntries implements Serializable { + @Deprecated(since = "7.0.0", forRemoval = true) private static final class Proxy implements Externalizable { + @java.io.Serial private static final long serialVersionUID = 1L; private DeleteEntries deleteEntries; @@ -45,11 +47,13 @@ public class DeleteEntries implements Serializable { deleteEntries = new DeleteEntries(in.readLong()); } + @java.io.Serial private Object readResolve() { return deleteEntries; } } + @java.io.Serial private static final long serialVersionUID = 1L; private final long fromIndex; @@ -63,7 +67,7 @@ public class DeleteEntries implements Serializable { } private Object writeReplace() { - return new Proxy(this); + return new DE(this); } @Override diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/LE.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/LE.java index 950cdc589b..7e609ab35c 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/LE.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/LE.java @@ -30,6 +30,13 @@ final class LE implements Externalizable { // For Externalizable } + // For size estimation only, use full bit size + LE(final Void dummy) { + index = Long.MIN_VALUE; + term = Long.MIN_VALUE; + data = null; + } + LE(final SimpleReplicatedLogEntry logEntry) { index = logEntry.getIndex(); term = logEntry.getTerm(); diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/NoopPayload.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/NoopPayload.java index e190bf0919..1fa865948a 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/NoopPayload.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/NoopPayload.java @@ -22,16 +22,20 @@ public final class NoopPayload extends Payload implements ControlMessage { public static final NoopPayload INSTANCE = new NoopPayload(); // There is no need for Externalizable + @Deprecated(since = "7.0.0", forRemoval = true) private static final class Proxy implements Serializable { + @java.io.Serial private static final long serialVersionUID = 1L; + @java.io.Serial private Object readResolve() { return INSTANCE; } } + @java.io.Serial private static final long serialVersionUID = 1L; - private static final Proxy PROXY = new Proxy(); + private static final NP PROXY = new NP(); // Estimate to how big the proxy is. Note this includes object stream overhead, so it is a bit conservative private static final int PROXY_SIZE = SerializationUtils.serialize(PROXY).length; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/SimpleReplicatedLogEntry.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/SimpleReplicatedLogEntry.java index 56a81f57f3..56c3f769ff 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/SimpleReplicatedLogEntry.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/SimpleReplicatedLogEntry.java @@ -24,7 +24,9 @@ import org.opendaylight.controller.cluster.raft.messages.Payload; * @author Thomas Pantelis */ public final class SimpleReplicatedLogEntry implements ReplicatedLogEntry, Serializable { + @Deprecated(since = "7.0.0", forRemoval = true) private static final class Proxy implements Externalizable { + @java.io.Serial private static final long serialVersionUID = 1L; private long index; @@ -58,14 +60,16 @@ public final class SimpleReplicatedLogEntry implements ReplicatedLogEntry, Seria data = (Payload) in.readObject(); } + @java.io.Serial private Object readResolve() { return new SimpleReplicatedLogEntry(index, term, data); } } + @java.io.Serial private static final long serialVersionUID = 1L; - // Estimate to how big the proxy is. Note this includes object stream overhead, so it is a bit conservative - private static final int PROXY_SIZE = SerializationUtils.serialize(new Proxy()).length; + // Estimate to how big the proxy is. Note this includes object stream overhead, so it is a bit conservative. + private static final int PROXY_SIZE = SerializationUtils.serialize(new LE((Void) null)).length; private final long index; private final long term; @@ -121,7 +125,7 @@ public final class SimpleReplicatedLogEntry implements ReplicatedLogEntry, Seria } private Object writeReplace() { - return new Proxy(this); + return new LE(this); } @Override @@ -139,12 +143,11 @@ public final class SimpleReplicatedLogEntry implements ReplicatedLogEntry, Seria if (this == obj) { return true; } - if (obj == null || getClass() != obj.getClass()) { return false; } - SimpleReplicatedLogEntry other = (SimpleReplicatedLogEntry) obj; + var other = (SimpleReplicatedLogEntry) obj; return index == other.index && term == other.term && payload.equals(other.payload); } 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 5f8a55f9ef..9812ac69d5 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 @@ -42,7 +42,9 @@ public class Snapshot implements Serializable { } } + @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; @@ -101,11 +103,13 @@ public class Snapshot implements Serializable { electionTerm, electionVotedFor, serverConfig); } + @java.io.Serial private Object readResolve() { return snapshot; } } + @java.io.Serial private static final long serialVersionUID = 1L; private final State state; @@ -160,7 +164,7 @@ public class Snapshot implements Serializable { } public long getLastIndex() { - return this.lastIndex; + return lastIndex; } public long getElectionTerm() { @@ -175,8 +179,9 @@ public class Snapshot implements Serializable { return serverConfig; } + @java.io.Serial private Object writeReplace() { - return new Proxy(this); + return new SS(this); } @Override diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/UpdateElectionTerm.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/UpdateElectionTerm.java index 939d893a2e..419aec0e32 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/UpdateElectionTerm.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/UpdateElectionTerm.java @@ -17,7 +17,9 @@ import java.io.Serializable; * Message class to persist election term information. */ public class UpdateElectionTerm implements Serializable { + @Deprecated(since = "7.0.0", forRemoval = true) private static final class Proxy implements Externalizable { + @java.io.Serial private static final long serialVersionUID = 1L; private UpdateElectionTerm updateElectionTerm; @@ -44,11 +46,13 @@ public class UpdateElectionTerm implements Serializable { updateElectionTerm = new UpdateElectionTerm(in.readLong(), (String) in.readObject()); } + @java.io.Serial private Object readResolve() { return updateElectionTerm; } } + @java.io.Serial private static final long serialVersionUID = 1L; private final long currentTerm; @@ -67,8 +71,9 @@ public class UpdateElectionTerm implements Serializable { return votedFor; } + @java.io.Serial private Object writeReplace() { - return new Proxy(this); + return new UT(this); } @Override diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/base/messages/TimeoutNowTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/base/messages/TimeoutNowTest.java index 375990e106..eed7e94049 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/base/messages/TimeoutNowTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/base/messages/TimeoutNowTest.java @@ -22,7 +22,7 @@ public class TimeoutNowTest { @Test public void test() { final var bytes = SerializationUtils.serialize(TimeoutNow.INSTANCE); - assertEquals(187, bytes.length); + assertEquals(86, bytes.length); final var cloned = SerializationUtils.deserialize(bytes); assertSame("Cloned instance", TimeoutNow.INSTANCE, cloned); } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerIdentifierTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerIdentifierTest.java index e0b7d61f0e..832e80fe88 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerIdentifierTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerIdentifierTest.java @@ -22,7 +22,7 @@ public class FollowerIdentifierTest { public void testSerialization() { final var expected = new FollowerIdentifier("follower1"); final var bytes = SerializationUtils.serialize(expected); - assertEquals(109, bytes.length); + assertEquals(87, bytes.length); final var cloned = (FollowerIdentifier) SerializationUtils.deserialize(bytes); assertEquals("cloned", expected, cloned); } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/client/messages/ShutdownTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/client/messages/ShutdownTest.java index ea3bd7e472..a4a8cf9d39 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/client/messages/ShutdownTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/client/messages/ShutdownTest.java @@ -22,7 +22,7 @@ public class ShutdownTest { @Test public void test() { final var bytes = SerializationUtils.serialize(Shutdown.INSTANCE); - assertEquals(187, bytes.length); + assertEquals(86, bytes.length); final var cloned = SerializationUtils.deserialize(bytes); assertSame("Cloned instance", Shutdown.INSTANCE, cloned); } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesReplyTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesReplyTest.java index 8c09729e10..4d90d78977 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesReplyTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesReplyTest.java @@ -25,7 +25,7 @@ public class AppendEntriesReplyTest { RaftVersions.CURRENT_VERSION); final var bytes = SerializationUtils.serialize(expected); - assertEquals(143, bytes.length); + assertEquals(98, bytes.length); final var cloned = (AppendEntriesReply) SerializationUtils.deserialize(bytes); assertEquals("getTerm", expected.getTerm(), cloned.getTerm()); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesTest.java index b061a2ca54..31f8b9a5d3 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesTest.java @@ -39,7 +39,7 @@ public class AppendEntriesTest { RaftVersions.CURRENT_VERSION, null); var bytes = SerializationUtils.serialize(expected); - assertEquals(355, bytes.length); + assertEquals(285, bytes.length); var cloned = (AppendEntries) SerializationUtils.deserialize(bytes); verifyAppendEntries(expected, cloned, RaftVersions.CURRENT_VERSION); @@ -50,7 +50,7 @@ public class AppendEntriesTest { RaftVersions.CURRENT_VERSION, "leader address"); bytes = SerializationUtils.serialize(expected); - assertEquals(371, bytes.length); + assertEquals(301, bytes.length); cloned = (AppendEntries) SerializationUtils.deserialize(bytes); verifyAppendEntries(expected, cloned, RaftVersions.CURRENT_VERSION); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotReplyTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotReplyTest.java index 7ea8fb7200..0d74f7df18 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotReplyTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotReplyTest.java @@ -22,7 +22,7 @@ public class InstallSnapshotReplyTest { public void testSerialization() { final var expected = new InstallSnapshotReply(5L, "follower", 1, true); final var bytes = SerializationUtils.serialize(expected); - assertEquals(126, bytes.length); + assertEquals(95, bytes.length); final var cloned = (InstallSnapshotReply) SerializationUtils.deserialize(bytes); assertEquals("getTerm", expected.getTerm(), cloned.getTerm()); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotTest.java index a3da959416..c6f080eb22 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotTest.java @@ -26,7 +26,16 @@ import org.opendaylight.controller.cluster.raft.persisted.ServerInfo; */ public class InstallSnapshotTest { @Test - public void testSerialization() { + public void testCurrentSerialization() { + testSerialization(RaftVersions.CURRENT_VERSION, 1262, 1125); + } + + @Test + public void testFluorineSerialization() { + testSerialization(RaftVersions.FLUORINE_VERSION, 1302, 1165); + } + + private static void testSerialization(final short raftVersion, final int fullSize, final int emptySize) { byte[] data = new byte[1000]; for (int i = 0, j = 0; i < data.length; i++) { data[i] = (byte)j; @@ -35,13 +44,13 @@ public class InstallSnapshotTest { } } - ServerConfigurationPayload serverConfig = new ServerConfigurationPayload(List.of( + var serverConfig = new ServerConfigurationPayload(List.of( new ServerInfo("leader", true), new ServerInfo("follower", false))); - assertInstallSnapshot(1302, new InstallSnapshot(3L, "leaderId", 11L, 2L, data, 5, 6, OptionalInt.of(54321), - Optional.of(serverConfig), RaftVersions.CURRENT_VERSION)); + assertInstallSnapshot(fullSize, new InstallSnapshot(3L, "leaderId", 11L, 2L, data, 5, 6, OptionalInt.of(54321), + Optional.of(serverConfig), raftVersion)); - assertInstallSnapshot(1165, new InstallSnapshot(3L, "leaderId", 11L, 2L, data, 5, 6, OptionalInt.empty(), - Optional.empty(), RaftVersions.CURRENT_VERSION)); + assertInstallSnapshot(emptySize, new InstallSnapshot(3L, "leaderId", 11L, 2L, data, 5, 6, OptionalInt.empty(), + Optional.empty(), raftVersion)); } private static void assertInstallSnapshot(final int expectedSize, final InstallSnapshot expected) { diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteReplyTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteReplyTest.java index 440c35f100..d3d469ff51 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteReplyTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteReplyTest.java @@ -22,7 +22,7 @@ public class RequestVoteReplyTest { public void testSerialization() { final var expected = new RequestVoteReply(5, true); final var bytes = SerializationUtils.serialize(expected); - assertEquals(105, bytes.length); + assertEquals(78, bytes.length); final var cloned = (RequestVoteReply) SerializationUtils.deserialize(bytes); assertEquals("getTerm", expected.getTerm(), cloned.getTerm()); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteTest.java index e710685056..6c684eef6b 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteTest.java @@ -22,7 +22,7 @@ public class RequestVoteTest { public void testSerialization() { final var expected = new RequestVote(4, "candidateId", 3, 2); final var bytes = SerializationUtils.serialize(expected); - assertEquals(131, bytes.length); + assertEquals(97, bytes.length); final var cloned = (RequestVote) SerializationUtils.deserialize(bytes); assertEquals("getTerm", expected.getTerm(), cloned.getTerm()); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/ApplyJournalEntriesTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/ApplyJournalEntriesTest.java index 2d9e7e3391..475de8d618 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/ApplyJournalEntriesTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/ApplyJournalEntriesTest.java @@ -22,7 +22,7 @@ public class ApplyJournalEntriesTest { public void testSerialization() { final var expected = new ApplyJournalEntries(5); final var bytes = SerializationUtils.serialize(expected); - assertEquals(108, bytes.length); + assertEquals(80, bytes.length); final var cloned = (ApplyJournalEntries) SerializationUtils.deserialize(bytes); assertEquals("getFromIndex", expected.getToIndex(), cloned.getToIndex()); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/DeleteEntriesTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/DeleteEntriesTest.java index 3254c899e6..e7b4fcce4d 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/DeleteEntriesTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/DeleteEntriesTest.java @@ -22,7 +22,7 @@ public class DeleteEntriesTest { public void testSerialization() { final var expected = new DeleteEntries(5); final var bytes = SerializationUtils.serialize(expected); - assertEquals(102, bytes.length); + assertEquals(79, bytes.length); final var cloned = (DeleteEntries) SerializationUtils.deserialize(bytes); assertEquals("getFromIndex", expected.getFromIndex(), cloned.getFromIndex()); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/NoopPayloadTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/NoopPayloadTest.java index cfeafbb173..bf2e8fa108 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/NoopPayloadTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/NoopPayloadTest.java @@ -17,7 +17,7 @@ public class NoopPayloadTest { @Test public void testSerialization() { final var bytes = SerializationUtils.serialize(NoopPayload.INSTANCE); - assertEquals(89, bytes.length); + assertEquals(74, bytes.length); assertSame(NoopPayload.INSTANCE, SerializationUtils.deserialize(bytes)); } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/SimpleReplicatedLogEntryTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/SimpleReplicatedLogEntryTest.java index 9c0e8907dc..6c01fcd848 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/SimpleReplicatedLogEntryTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/SimpleReplicatedLogEntryTest.java @@ -23,7 +23,7 @@ public class SimpleReplicatedLogEntryTest { public void testSerialization() { final var expected = new SimpleReplicatedLogEntry(0, 1, new MockRaftActorContext.MockPayload("A")); final var bytes = SerializationUtils.serialize(expected); - assertEquals(260, bytes.length); + assertEquals(218, bytes.length); final var cloned = (SimpleReplicatedLogEntry) SerializationUtils.deserialize(bytes); assertEquals("getTerm", expected.getTerm(), cloned.getTerm()); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/SnapshotTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/SnapshotTest.java index 55d9d47376..99fa883afc 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/SnapshotTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/SnapshotTest.java @@ -24,8 +24,8 @@ public class SnapshotTest { @Test public void testSerialization() { testSerialization(new byte[]{1, 2, 3, 4, 5, 6, 7}, List.of( - new SimpleReplicatedLogEntry(6, 2, new MockPayload("payload"))), 548); - testSerialization(new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9}, List.of(), 389); + new SimpleReplicatedLogEntry(6, 2, new MockPayload("payload"))), 491); + testSerialization(new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9}, List.of(), 345); } private static void testSerialization(final byte[] state, final List unapplied, diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/UpdateElectionTermTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/UpdateElectionTermTest.java index f783c64be7..cc6ba2d6c6 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/UpdateElectionTermTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/persisted/UpdateElectionTermTest.java @@ -22,7 +22,7 @@ public class UpdateElectionTermTest { public void testSerialization() { final var expected = new UpdateElectionTerm(5, "leader"); final var bytes = SerializationUtils.serialize(expected); - assertEquals(116, bytes.length); + assertEquals(88, bytes.length); final var cloned = (UpdateElectionTerm) SerializationUtils.deserialize(bytes); assertEquals("getCurrentTerm", expected.getCurrentTerm(), cloned.getCurrentTerm()); -- 2.36.6