public Builder(GossipManager gossipManager) { myId = gossipManager.getMyself().getId(); counter = 0L; }
/** required for reflection to work! */ public UdpTransportManager(GossipManager gossipManager, GossipCore gossipCore) { super(gossipManager, gossipCore); soTimeout = gossipManager.getSettings().getGossipInterval() * 2; try { SocketAddress socketAddress = new InetSocketAddress(gossipManager.getMyself().getUri().getHost(), gossipManager.getMyself().getUri().getPort()); server = new DatagramSocket(socketAddress); } catch (SocketException ex) { LOGGER.warn(ex); throw new RuntimeException(ex); } me = new Thread(this); }
private List<LocalMember> sameDatacenterDifferentRack(){ String myDc = gossipManager.getMyself().getProperties().get(DATACENTER); String rack = gossipManager.getMyself().getProperties().get(RACK); if (myDc == null|| rack == null){ return Collections.emptyList(); } List<LocalMember> notMyDc = new ArrayList<LocalMember>(10); for (LocalMember i : gossipManager.getLiveMembers()){ if (myDc.equals(i.getProperties().get(DATACENTER)) && !rack.equals(i.getProperties().get(RACK))){ notMyDc.add(i); } } return notMyDc; }
private void debugState(RemoteMember senderMember, List<Member> remoteList){ LOGGER.warn( "-----------------------\n" + "Me " + gossipManager.getMyself() + "\n" + "Sender " + senderMember + "\n" + "RemoteList " + remoteList + "\n" + "Live " + gossipManager.getLiveMembers()+ "\n" + "Dead " + gossipManager.getDeadMembers()+ "\n" + "======================="); }
/** * sends an optimistic shutdown message to several clusters nodes */ protected void sendShutdownMessage(){ List<LocalMember> l = gossipManager.getLiveMembers(); int sendTo = l.size() < 3 ? 1 : l.size() / 3; for (int i = 0; i < sendTo; i++) { threadService.execute(() -> sendShutdownMessage(gossipManager.getMyself(), selectPartner(l))); } } }
/** * sends an optimistic shutdown message to several clusters nodes */ protected void sendShutdownMessage(){ List<LocalMember> l = gossipManager.getLiveMembers(); int sendTo = l.size() < 3 ? 1 : l.size() / 2; for (int i = 0; i < sendTo; i++) { threadService.execute(() -> sendShutdownMessage(gossipManager.getMyself(), selectPartner(l))); } } }
private void sendToSameRackMember() { LocalMember i = selectPartner(sameRackNodes()); sendMembershipList(gossipManager.getMyself(), i); }
public UnitTestTransportManager(GossipManager gossipManager, GossipCore gossipCore) { super(gossipManager, gossipCore); localEndpoint = gossipManager.getMyself().getUri(); }
protected void sendToALiveMember(){ LocalMember member = selectPartner(gossipManager.getLiveMembers()); sendMembershipList(gossipManager.getMyself(), member); }
protected void sendToDeadMember(){ LocalMember member = selectPartner(gossipManager.getDeadMembers()); sendMembershipList(gossipManager.getMyself(), member); }
private void sameDcDiffernetRackMember() { sendMembershipList(gossipManager.getMyself(), selectPartner(sameDatacenterDifferentRack())); }
private void sendToDeadMember() { sendMembershipList(gossipManager.getMyself(), selectPartner(gossipManager.getDeadMembers())); }
private void differentDcMember() { sendMembershipList(gossipManager.getMyself(), selectPartner(differentDataCenter())); }
private void differentDcPerNode() { sendPerNodeData(gossipManager.getMyself(), selectPartner(differentDataCenter())); }
private void sameDcDiffernetRackPerNode() { sendPerNodeData(gossipManager.getMyself(), selectPartner(sameDatacenterDifferentRack())); }
private void sendToSameRackShared() { sendSharedData(gossipManager.getMyself(), selectPartner(sameRackNodes())); }
/** * Get the voted node id from this node for a given key * @param key key of the data object * @return Voted node id */ public String getVotedCandidateNodeId(String key) { SharedDataMessage message = gossipManager.findSharedGossipData(generateLockKey(key)); if (message == null || !(message.getPayload() instanceof MajorityVote)) { return null; } MajorityVote majorityVote = (MajorityVote) message.getPayload(); return getVotedCandidateNodeId(gossipManager.getMyself().getId(), majorityVote.value()); }