X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Feos-dom-akka%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Feos%2Fakka%2Fowner%2Fchecker%2FOwnerStateChecker.java;fp=opendaylight%2Fmd-sal%2Feos-dom-akka%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Feos%2Fakka%2Fowner%2Fchecker%2FOwnerStateChecker.java;h=6d418a80e7d9b873988b4e5f0a97acfe6ca279ee;hb=1adec580405aafae353f8b0b3a5a0f474a05c6c0;hp=57c40aca7854c13f3dcb420836777260125d0794;hpb=f2868cf8e1ddc85ec1128199ed2607922ea74c24;p=controller.git diff --git a/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/owner/checker/OwnerStateChecker.java b/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/owner/checker/OwnerStateChecker.java index 57c40aca78..6d418a80e7 100644 --- a/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/owner/checker/OwnerStateChecker.java +++ b/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/owner/checker/OwnerStateChecker.java @@ -9,6 +9,7 @@ package org.opendaylight.controller.eos.akka.owner.checker; import static java.util.Objects.requireNonNull; +import akka.actor.typed.ActorRef; import akka.actor.typed.Behavior; import akka.actor.typed.javadsl.AbstractBehavior; import akka.actor.typed.javadsl.ActorContext; @@ -17,6 +18,7 @@ import akka.actor.typed.javadsl.Receive; import akka.cluster.ddata.LWWRegister; import akka.cluster.ddata.LWWRegisterKey; import akka.cluster.ddata.typed.javadsl.DistributedData; +import akka.cluster.ddata.typed.javadsl.Replicator; import akka.cluster.ddata.typed.javadsl.Replicator.Get; import akka.cluster.ddata.typed.javadsl.Replicator.GetFailure; import akka.cluster.ddata.typed.javadsl.Replicator.GetResponse; @@ -25,10 +27,16 @@ import akka.cluster.ddata.typed.javadsl.Replicator.NotFound; import akka.cluster.ddata.typed.javadsl.Replicator.ReadMajority; import akka.cluster.ddata.typed.javadsl.ReplicatorMessageAdapter; import java.time.Duration; +import org.opendaylight.controller.eos.akka.owner.checker.command.GetEntitiesRequest; +import org.opendaylight.controller.eos.akka.owner.checker.command.GetEntityOwnerRequest; +import org.opendaylight.controller.eos.akka.owner.checker.command.GetEntityRequest; import org.opendaylight.controller.eos.akka.owner.checker.command.GetOwnershipState; import org.opendaylight.controller.eos.akka.owner.checker.command.GetOwnershipStateReply; import org.opendaylight.controller.eos.akka.owner.checker.command.InternalGetReply; import org.opendaylight.controller.eos.akka.owner.checker.command.StateCheckerCommand; +import org.opendaylight.controller.eos.akka.owner.checker.command.StateCheckerRequest; +import org.opendaylight.controller.eos.akka.owner.supervisor.command.OwnerSupervisorCommand; +import org.opendaylight.mdsal.binding.dom.codec.api.BindingInstanceIdentifierCodec; import org.opendaylight.mdsal.eos.common.api.EntityOwnershipState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,18 +46,28 @@ public final class OwnerStateChecker extends AbstractBehavior> replicatorAdapter; + private final ReplicatorMessageAdapter> ownerReplicator; + private final ActorRef ownerSupervisor; + private final BindingInstanceIdentifierCodec iidCodec; + private final ActorRef replicator; private final String localMember; - private OwnerStateChecker(final ActorContext context, final String localMember) { + private OwnerStateChecker(final ActorContext context, + final String localMember, + final ActorRef ownerSupervisor, + final BindingInstanceIdentifierCodec iidCodec) { super(context); this.localMember = requireNonNull(localMember); - replicatorAdapter = new ReplicatorMessageAdapter<>(context, - DistributedData.get(context.getSystem()).replicator(), UNEXPECTED_ASK_TIMEOUT); + this.ownerSupervisor = requireNonNull(ownerSupervisor); + this.iidCodec = requireNonNull(iidCodec); + replicator = DistributedData.get(context.getSystem()).replicator(); + ownerReplicator = new ReplicatorMessageAdapter<>(context, replicator, UNEXPECTED_ASK_TIMEOUT); } - public static Behavior create(final String localMember) { - return Behaviors.setup(ctx -> new OwnerStateChecker(ctx, localMember)); + public static Behavior create(final String localMember, + final ActorRef ownerSupervisor, + final BindingInstanceIdentifierCodec iidCodec) { + return Behaviors.setup(ctx -> new OwnerStateChecker(ctx, localMember, ownerSupervisor, iidCodec)); } @Override @@ -57,11 +75,14 @@ public final class OwnerStateChecker extends AbstractBehavior onGetOwnershipState(final GetOwnershipState message) { - replicatorAdapter.askGet( + ownerReplicator.askGet( askReplyTo -> new Get<>( new LWWRegisterKey<>(message.getEntity().toString()), new ReadMajority(GET_OWNERSHIP_TIMEOUT), @@ -90,4 +111,13 @@ public final class OwnerStateChecker extends AbstractBehavior executeEntityRpc(final StateCheckerRequest request) { + final ActorRef rpcHandler = + getContext().spawnAnonymous(EntityRpcHandler.create(ownerSupervisor, iidCodec)); + + LOG.debug("Executing entity rpc: {} in actor: {}", request, rpcHandler); + rpcHandler.tell(request); + return this; + } }