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%2FGetSnapshotReplyActor.java;h=d1e0b5c286e609259a5837d3c4e1c08667478caf;hp=ca09823a12cdbc56cc90489841a7236f7c6763a2;hb=HEAD;hpb=f1c3050779d7770ef6a12a67a1870765c3dfd9eb diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/GetSnapshotReplyActor.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/GetSnapshotReplyActor.java index ca09823a12..6febb90251 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/GetSnapshotReplyActor.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/GetSnapshotReplyActor.java @@ -7,49 +7,53 @@ */ package org.opendaylight.controller.cluster.raft; +import static java.util.Objects.requireNonNull; + import akka.actor.ActorRef; import akka.actor.PoisonPill; import akka.actor.Props; import akka.actor.ReceiveTimeout; -import akka.actor.UntypedActor; -import com.google.common.base.Preconditions; +import akka.actor.UntypedAbstractActor; import java.util.concurrent.TimeoutException; -import org.apache.commons.lang3.SerializationUtils; import org.opendaylight.controller.cluster.raft.base.messages.CaptureSnapshot; import org.opendaylight.controller.cluster.raft.base.messages.CaptureSnapshotReply; import org.opendaylight.controller.cluster.raft.client.messages.GetSnapshotReply; +import org.opendaylight.controller.cluster.raft.persisted.ServerConfigurationPayload; +import org.opendaylight.controller.cluster.raft.persisted.Snapshot; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import scala.concurrent.duration.Duration; +import scala.concurrent.duration.FiniteDuration; /** * Temporary actor used to receive a CaptureSnapshotReply message and return a GetSnapshotReply instance. * * @author Thomas Pantelis */ -class GetSnapshotReplyActor extends UntypedActor { +final class GetSnapshotReplyActor extends UntypedAbstractActor { private static final Logger LOG = LoggerFactory.getLogger(GetSnapshotReplyActor.class); private final Params params; - private GetSnapshotReplyActor(Params params) { + GetSnapshotReplyActor(final Params params) { this.params = params; getContext().setReceiveTimeout(params.receiveTimeout); } @Override - public void onReceive(Object message) { - if(message instanceof CaptureSnapshotReply) { - Snapshot snapshot = Snapshot.create(((CaptureSnapshotReply)message).getSnapshot(), + public void onReceive(final Object message) { + if (message instanceof CaptureSnapshotReply) { + Snapshot snapshot = Snapshot.create( + ((CaptureSnapshotReply)message).getSnapshotState(), params.captureSnapshot.getUnAppliedEntries(), params.captureSnapshot.getLastIndex(), params.captureSnapshot.getLastTerm(), params.captureSnapshot.getLastAppliedIndex(), params.captureSnapshot.getLastAppliedTerm(), - params.electionTerm.getCurrentTerm(), params.electionTerm.getVotedFor()); + params.electionTerm.getCurrentTerm(), params.electionTerm.getVotedFor(), + params.peerInformation); LOG.debug("{}: Received CaptureSnapshotReply, sending {}", params.id, snapshot); - params.replyToActor.tell(new GetSnapshotReply(params.id, SerializationUtils.serialize(snapshot)), getSelf()); + params.replyToActor.tell(new GetSnapshotReply(params.id, snapshot), getSelf()); getSelf().tell(PoisonPill.getInstance(), getSelf()); } else if (message instanceof ReceiveTimeout) { LOG.warn("{}: Got ReceiveTimeout for inactivity - did not receive CaptureSnapshotReply within {} ms", @@ -62,26 +66,29 @@ class GetSnapshotReplyActor extends UntypedActor { } } - public static Props props(CaptureSnapshot captureSnapshot, ElectionTerm electionTerm, ActorRef replyToActor, - Duration receiveTimeout, String id) { + public static Props props(final CaptureSnapshot captureSnapshot, final ElectionTerm electionTerm, + final ActorRef replyToActor, final FiniteDuration receiveTimeout, final String id, + final ServerConfigurationPayload updatedPeerInfo) { return Props.create(GetSnapshotReplyActor.class, new Params(captureSnapshot, electionTerm, replyToActor, - receiveTimeout, id)); + receiveTimeout, id, updatedPeerInfo)); } private static final class Params { final CaptureSnapshot captureSnapshot; final ActorRef replyToActor; final ElectionTerm electionTerm; - final Duration receiveTimeout; + final FiniteDuration receiveTimeout; final String id; + final ServerConfigurationPayload peerInformation; - Params(CaptureSnapshot captureSnapshot, ElectionTerm electionTerm, ActorRef replyToActor, - Duration receiveTimeout, String id) { - this.captureSnapshot = Preconditions.checkNotNull(captureSnapshot); - this.electionTerm = Preconditions.checkNotNull(electionTerm); - this.replyToActor = Preconditions.checkNotNull(replyToActor); - this.receiveTimeout = Preconditions.checkNotNull(receiveTimeout); - this.id = Preconditions.checkNotNull(id); + Params(final CaptureSnapshot captureSnapshot, final ElectionTerm electionTerm, final ActorRef replyToActor, + final FiniteDuration receiveTimeout, final String id, final ServerConfigurationPayload peerInfo) { + this.captureSnapshot = requireNonNull(captureSnapshot); + this.electionTerm = requireNonNull(electionTerm); + this.replyToActor = requireNonNull(replyToActor); + this.receiveTimeout = requireNonNull(receiveTimeout); + this.id = requireNonNull(id); + peerInformation = peerInfo; } } }