X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-remoterpc-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fremote%2Frpc%2Fregistry%2Fgossip%2FBucketStore.java;h=3b078aa062fdf1fc3feaca7fa10147de8c3503cc;hp=2f634ce1fabffea20397cd21cf6196c982418c2d;hb=3831771765fd07c3ec0f224c8a0c01ce6ae94186;hpb=5c7fe226016d6997f411601502589e86ad9d8f87 diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/BucketStore.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/BucketStore.java index 2f634ce1fa..3b078aa062 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/BucketStore.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/BucketStore.java @@ -9,12 +9,14 @@ package org.opendaylight.controller.remote.rpc.registry.gossip; import akka.actor.ActorRef; +import akka.actor.ActorRefProvider; import akka.actor.Address; import akka.actor.Props; import akka.actor.UntypedActor; -import akka.cluster.Cluster; +import akka.cluster.ClusterActorRefProvider; import akka.event.Logging; import akka.event.LoggingAdapter; +import org.opendaylight.controller.utils.ConditionalProbe; import java.util.HashMap; import java.util.Map; @@ -64,25 +66,17 @@ public class BucketStore extends UntypedActor { /** * Cluster address for this node */ - private final Address selfAddress = Cluster.get(getContext().system()).selfAddress(); + private Address selfAddress; - /** - * Our private gossiper - */ - private ActorRef gossiper; + private ConditionalProbe probe; - public BucketStore(){ - gossiper = getContext().actorOf(Props.create(Gossiper.class), "gossiper"); - } + @Override + public void preStart(){ + ActorRefProvider provider = getContext().provider(); + selfAddress = provider.getDefaultAddress(); - /** - * This constructor is useful for testing. - * TODO: Pass Props instead of ActorRef - * - * @param gossiper - */ - public BucketStore(ActorRef gossiper){ - this.gossiper = gossiper; + if ( provider instanceof ClusterActorRefProvider) + getContext().actorOf(Props.create(Gossiper.class), "gossiper"); } @Override @@ -90,25 +84,28 @@ public class BucketStore extends UntypedActor { log.debug("Received message: node[{}], message[{}]", selfAddress, message); - if (message instanceof UpdateBucket) - receiveUpdateBucket(((UpdateBucket) message).getBucket()); + if (probe != null) { + probe.tell(message, getSelf()); + } - else if (message instanceof GetAllBuckets) + if (message instanceof ConditionalProbe) { + log.info("Received probe {} {}", getSelf(), message); + probe = (ConditionalProbe) message; + } else if (message instanceof UpdateBucket) { + receiveUpdateBucket(((UpdateBucket) message).getBucket()); + } else if (message instanceof GetAllBuckets) { receiveGetAllBucket(); - - else if (message instanceof GetLocalBucket) + } else if (message instanceof GetLocalBucket) { receiveGetLocalBucket(); - - else if (message instanceof GetBucketsByMembers) - receiveGetBucketsByMembers(((GetBucketsByMembers) message).getMembers()); - - else if (message instanceof GetBucketVersions) + } else if (message instanceof GetBucketsByMembers) { + receiveGetBucketsByMembers( + ((GetBucketsByMembers) message).getMembers()); + } else if (message instanceof GetBucketVersions) { receiveGetBucketVersions(); - - else if (message instanceof UpdateRemoteBuckets) - receiveUpdateRemoteBuckets(((UpdateRemoteBuckets) message).getBuckets()); - - else { + } else if (message instanceof UpdateRemoteBuckets) { + receiveUpdateRemoteBuckets( + ((UpdateRemoteBuckets) message).getBuckets()); + } else { log.debug("Unhandled message [{}]", message); unhandled(message); } @@ -230,7 +227,7 @@ public class BucketStore extends UntypedActor { if (remoteVersion == null) remoteVersion = -1L; //update only if remote version is newer - if ( remoteVersion > localVersion ) { + if ( remoteVersion.longValue() > localVersion.longValue() ) { remoteBuckets.put(entry.getKey(), receivedBucket); versions.put(entry.getKey(), remoteVersion); }