import akka.cluster.Member;
import akka.dispatch.Mapper;
import akka.pattern.Patterns;
+import com.google.common.base.Preconditions;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
private Boolean autoStartGossipTicks = true;
- private RemoteRpcProviderConfig config;
+ private final RemoteRpcProviderConfig config;
- public Gossiper(){
- config = new RemoteRpcProviderConfig(getContext().system().settings().config());
+ public Gossiper(RemoteRpcProviderConfig config){
+ this.config = Preconditions.checkNotNull(config);
}
/**
* @param autoStartGossipTicks used for turning off gossip ticks during testing.
* Gossip tick can be manually sent.
*/
- public Gossiper(Boolean autoStartGossipTicks){
+ public Gossiper(Boolean autoStartGossipTicks, RemoteRpcProviderConfig config){
+ this(config);
this.autoStartGossipTicks = autoStartGossipTicks;
}
Integer randomIndex = ThreadLocalRandom.current().nextInt(0, clusterMembers.size());
remoteMemberToGossipTo = clusterMembers.get(randomIndex);
}
- if(log.isDebugEnabled()) {
- log.debug("Gossiping to [{}]", remoteMemberToGossipTo);
+ if(log.isTraceEnabled()) {
+ log.trace("Gossiping to [{}]", remoteMemberToGossipTo);
}
getLocalStatusAndSendTo(remoteMemberToGossipTo);
}
void receiveGossip(GossipEnvelope envelope){
//TODO: Add more validations
if (!selfAddress.equals(envelope.to())) {
- if(log.isDebugEnabled()) {
- log.debug("Ignoring message intended for someone else. From [{}] to [{}]", envelope.from(), envelope.to());
+ if(log.isTraceEnabled()) {
+ log.trace("Ignoring message intended for someone else. From [{}] to [{}]", envelope.from(), envelope.to());
}
return;
}
ActorSelection remoteRef = getContext().system().actorSelection(
remoteActorSystemAddress.toString() + getSelf().path().toStringWithoutAddress());
- if(log.isDebugEnabled()) {
- log.debug("Sending bucket versions to [{}]", remoteRef);
+ if(log.isTraceEnabled()) {
+ log.trace("Sending bucket versions to [{}]", remoteRef);
}
futureReply.map(getMapperToSendLocalStatus(remoteRef), getContext().dispatcher());
public Void apply(Object msg) {
if (msg instanceof GetBucketsByMembersReply) {
Map<Address, Bucket> buckets = ((GetBucketsByMembersReply) msg).getBuckets();
- if(log.isDebugEnabled()) {
- log.debug("Buckets to send from {}: {}", selfAddress, buckets);
+ if(log.isTraceEnabled()) {
+ log.trace("Buckets to send from {}: {}", selfAddress, buckets);
}
GossipEnvelope envelope = new GossipEnvelope(selfAddress, sender.path().address(), buckets);
sender.tell(envelope, getSelf());