From fb81da23c32b8a332d2cc25e4b15e13b3d2963cd Mon Sep 17 00:00:00 2001 From: Tom Pantelis Date: Wed, 24 May 2017 10:58:57 -0400 Subject: [PATCH] Bug 5740: Add ControlMessage interface to raft messages Added 'implements ControlMessage' for all RaftRPCs and other messages related to raft that should have higher priority. Change-Id: Ie699531ef67d9cbcf7cbdec0422dd2e6faafebaa Signed-off-by: Tom Pantelis --- .../controller/cluster/raft/base/messages/ApplySnapshot.java | 3 ++- .../controller/cluster/raft/base/messages/ApplyState.java | 3 ++- .../cluster/raft/base/messages/CaptureSnapshot.java | 3 ++- .../cluster/raft/base/messages/CaptureSnapshotReply.java | 3 ++- .../cluster/raft/base/messages/ElectionTimeout.java | 4 +++- .../controller/cluster/raft/base/messages/SendHeartBeat.java | 4 +++- .../cluster/raft/base/messages/SnapshotComplete.java | 4 +++- .../controller/cluster/raft/base/messages/TimeoutNow.java | 3 ++- .../cluster/raft/client/messages/GetOnDemandRaftState.java | 4 +++- .../controller/cluster/raft/client/messages/Shutdown.java | 3 ++- .../controller/cluster/raft/messages/RaftRPC.java | 3 ++- .../raft/messages/UnInitializedFollowerSnapshotReply.java | 4 +++- .../cluster/raft/persisted/ApplyJournalEntries.java | 3 ++- .../controller/cluster/raft/persisted/NoopPayload.java | 5 ++--- 14 files changed, 33 insertions(+), 16 deletions(-) diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplySnapshot.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplySnapshot.java index 9cf2a3f6c1..7fec7e25f9 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplySnapshot.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplySnapshot.java @@ -8,6 +8,7 @@ package org.opendaylight.controller.cluster.raft.base.messages; +import akka.dispatch.ControlMessage; import com.google.common.base.Preconditions; import javax.annotation.Nonnull; import org.opendaylight.controller.cluster.raft.persisted.Snapshot; @@ -15,7 +16,7 @@ import org.opendaylight.controller.cluster.raft.persisted.Snapshot; /** * Internal message, issued by follower to its actor. */ -public class ApplySnapshot { +public class ApplySnapshot implements ControlMessage { private static final Callback NOOP_CALLBACK = new Callback() { @Override public void onSuccess() { diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplyState.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplyState.java index 498d8d3bbb..10ee1d04f5 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplyState.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplyState.java @@ -9,13 +9,14 @@ package org.opendaylight.controller.cluster.raft.base.messages; import akka.actor.ActorRef; +import akka.dispatch.ControlMessage; import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry; import org.opendaylight.yangtools.concepts.Identifier; /** * Local message sent by a RaftActor to itself to signal state has been applied to the state machine. */ -public class ApplyState { +public class ApplyState implements ControlMessage { private final ActorRef clientActor; private final Identifier identifier; private final ReplicatedLogEntry replicatedLogEntry; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CaptureSnapshot.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CaptureSnapshot.java index 2173534a58..2a54d7a3d9 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CaptureSnapshot.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CaptureSnapshot.java @@ -8,11 +8,12 @@ package org.opendaylight.controller.cluster.raft.base.messages; +import akka.dispatch.ControlMessage; import java.util.Collections; import java.util.List; import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry; -public class CaptureSnapshot { +public class CaptureSnapshot implements ControlMessage { private final long lastAppliedIndex; private final long lastAppliedTerm; private final long lastIndex; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CaptureSnapshotReply.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CaptureSnapshotReply.java index cc981e5711..f0e16a092a 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CaptureSnapshotReply.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CaptureSnapshotReply.java @@ -7,13 +7,14 @@ */ package org.opendaylight.controller.cluster.raft.base.messages; +import akka.dispatch.ControlMessage; import com.google.common.base.Preconditions; import java.io.OutputStream; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.controller.cluster.raft.persisted.Snapshot; -public class CaptureSnapshotReply { +public class CaptureSnapshotReply implements ControlMessage { private final Snapshot.State snapshotState; private final Optional installSnapshotStream; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ElectionTimeout.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ElectionTimeout.java index 606835e21f..7f367f982b 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ElectionTimeout.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ElectionTimeout.java @@ -8,10 +8,12 @@ package org.opendaylight.controller.cluster.raft.base.messages; +import akka.dispatch.ControlMessage; + /** * Local message sent to indicate the current election term has timed out. */ -public final class ElectionTimeout { +public final class ElectionTimeout implements ControlMessage { public static final ElectionTimeout INSTANCE = new ElectionTimeout(); private ElectionTimeout() { diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SendHeartBeat.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SendHeartBeat.java index 31d15ddddf..b3e44f0ce1 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SendHeartBeat.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SendHeartBeat.java @@ -8,10 +8,12 @@ package org.opendaylight.controller.cluster.raft.base.messages; +import akka.dispatch.ControlMessage; + /** * This messages is sent via a schedule to the Leader to prompt it to send a heart beat to its followers. */ -public final class SendHeartBeat { +public final class SendHeartBeat implements ControlMessage { public static final SendHeartBeat INSTANCE = new SendHeartBeat(); private SendHeartBeat() { diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SnapshotComplete.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SnapshotComplete.java index d0329ede59..cc20cf677a 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SnapshotComplete.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SnapshotComplete.java @@ -7,12 +7,14 @@ */ package org.opendaylight.controller.cluster.raft.base.messages; +import akka.dispatch.ControlMessage; + /** * Internal message sent when a snapshot capture is complete. * * @author Thomas Pantelis */ -public class SnapshotComplete { +public class SnapshotComplete implements ControlMessage { public static final SnapshotComplete INSTANCE = new SnapshotComplete(); private SnapshotComplete() { 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 b85d8b7008..b212250dd4 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 @@ -7,6 +7,7 @@ */ package org.opendaylight.controller.cluster.raft.base.messages; +import akka.dispatch.ControlMessage; import java.io.Serializable; /** @@ -14,7 +15,7 @@ import java.io.Serializable; * * @author Thomas Pantelis */ -public final class TimeoutNow implements Serializable { +public final class TimeoutNow implements Serializable, ControlMessage { private static final long serialVersionUID = 1L; public static final TimeoutNow INSTANCE = new TimeoutNow(); diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/GetOnDemandRaftState.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/GetOnDemandRaftState.java index be043861fb..a1083ebdf7 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/GetOnDemandRaftState.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/GetOnDemandRaftState.java @@ -7,13 +7,15 @@ */ package org.opendaylight.controller.cluster.raft.client.messages; +import akka.dispatch.ControlMessage; + /** * Local message sent to a RaftActor to obtain a snapshot of statistical information. Returns an * OnDemandRaftState instance. * * @author Thomas Pantelis */ -public class GetOnDemandRaftState { +public class GetOnDemandRaftState implements ControlMessage { public static final GetOnDemandRaftState INSTANCE = new GetOnDemandRaftState(); private GetOnDemandRaftState() { 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 22acc41e01..b670243b42 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 @@ -7,6 +7,7 @@ */ package org.opendaylight.controller.cluster.raft.client.messages; +import akka.dispatch.ControlMessage; import java.io.Serializable; import org.opendaylight.controller.cluster.raft.base.messages.EmptyExternalizableProxy; @@ -17,7 +18,7 @@ import org.opendaylight.controller.cluster.raft.base.messages.EmptyExternalizabl * * @author Thomas Pantelis */ -public final class Shutdown implements Serializable { +public final class Shutdown implements Serializable, ControlMessage { private static final long serialVersionUID = 1L; public static final Shutdown INSTANCE = new Shutdown(); diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RaftRPC.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RaftRPC.java index b3c16670fa..ac990001e3 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RaftRPC.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RaftRPC.java @@ -8,12 +8,13 @@ package org.opendaylight.controller.cluster.raft.messages; +import akka.dispatch.ControlMessage; import java.io.Serializable; /** * Interface implemented by all requests exchanged in the Raft protocol. */ -public interface RaftRPC extends Serializable { +public interface RaftRPC extends Serializable, ControlMessage { /** * Return the term in which this call is being made. * diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/UnInitializedFollowerSnapshotReply.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/UnInitializedFollowerSnapshotReply.java index f5c44f87e4..ff11ca0317 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/UnInitializedFollowerSnapshotReply.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/UnInitializedFollowerSnapshotReply.java @@ -7,11 +7,13 @@ */ package org.opendaylight.controller.cluster.raft.messages; +import akka.dispatch.ControlMessage; + /** * Local message sent to self on receiving the InstallSnapshotReply from a follower indicating that * the catch up of the follower has completed successfully for an AddServer operation. */ -public class UnInitializedFollowerSnapshotReply { +public class UnInitializedFollowerSnapshotReply implements ControlMessage { private final String followerId; public UnInitializedFollowerSnapshotReply(String followerId) { 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 6045427065..ef3c8660d6 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 @@ -7,6 +7,7 @@ */ package org.opendaylight.controller.cluster.raft.persisted; +import akka.dispatch.ControlMessage; import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; @@ -21,7 +22,7 @@ import java.io.Serializable; * * @author Thomas Pantelis */ -public class ApplyJournalEntries implements Serializable { +public class ApplyJournalEntries implements Serializable, ControlMessage { private static final class Proxy 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/persisted/NoopPayload.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/NoopPayload.java index 782bb72175..46628c6078 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 @@ -7,6 +7,7 @@ */ package org.opendaylight.controller.cluster.raft.persisted; +import akka.dispatch.ControlMessage; import java.io.Serializable; import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; @@ -16,14 +17,13 @@ import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payloa * * @author Thomas Pantelis */ -public final class NoopPayload extends Payload implements Serializable { +public final class NoopPayload extends Payload implements Serializable, ControlMessage { public static final NoopPayload INSTANCE = new NoopPayload(); // There is no need for Externalizable private static final class Proxy implements Serializable { private static final long serialVersionUID = 1L; - @SuppressWarnings("static-method") private Object readResolve() { return INSTANCE; } @@ -40,7 +40,6 @@ public final class NoopPayload extends Payload implements Serializable { return 0; } - @SuppressWarnings("static-method") private Object writeReplace() { return PROXY; } -- 2.36.6