/** * Sends a split brain join request to the target address and checks the response to see if this node should merge * to the target address. */ protected final SplitBrainMergeCheckResult sendSplitBrainJoinMessageAndCheckResponse(Address target, SplitBrainJoinMessage request) { SplitBrainJoinMessage response = sendSplitBrainJoinMessage(target, request); return clusterService.getClusterJoinManager().shouldMerge(response); }
@Override public void changeClusterVersion(Version version) { MemberMap memberMap = membershipManager.getMemberMap(); changeClusterVersion(version, memberMap); }
private void verifyJoiner(ConfigCheck found) { if (!equals(joinerType, found.joinerType)) { throw new ConfigMismatchException("Incompatible joiners! expected: " + joinerType + ", found: " + found.joinerType); } }
private void clearInternalState() { lock.lock(); try { membershipManager.reset(); clusterHeartbeatManager.reset(); clusterStateManager.reset(); clusterJoinManager.reset(); resetJoinState(); } finally { lock.unlock(); } }
private boolean isValidJoinMessage(Object msg) { if (!isJoinMessage(msg)) { return false; } JoinMessage joinMessage = (JoinMessage) msg; if (isMessageToSelf(joinMessage)) { return false; } ConfigCheck theirConfig = joinMessage.getConfigCheck(); if (!ourConfig.isSameGroup(theirConfig)) { return false; } return true; }
private boolean shouldClaimMastership(MemberMap memberMap) { if (clusterService.isMaster()) { return false; } for (MemberImpl m : memberMap.headMemberSet(clusterService.getLocalMember(), false)) { if (!isMemberSuspected(m.getAddress())) { return false; } } return true; }
MembersViewMetadata createLocalMembersViewMetadata() { return new MembersViewMetadata(node.getThisAddress(), clusterService.getThisUuid(), clusterService.getMasterAddress(), getMemberListVersion()); }
public MulticastJoiner(Node node) { super(node); maxTryCount = new AtomicInteger(calculateTryCount()); node.multicastService.addMulticastListener(new SplitBrainMulticastListener(node, splitBrainJoinMessages)); }
@Override public Collection<Member> getMembers(MemberSelector selector) { return (Collection) new MemberSelectingCollection(membershipManager.getMembers(), selector); }
public Collection<Address> getMemberAddresses() { return membershipManager.getMemberMap().getAddresses(); }
public String getMemberListString() { return useLegacyMemberListFormat ? legacyMemberListString() : membershipManager.memberListString(); }
@Override public Throwable createException(String message, Throwable cause) { return new ConfigMismatchException(message); } });
@Override public String toString() { return "ClusterService" + "{address=" + getThisAddress() + '}'; } }
private void clearInternalState() { lock.lock(); try { membershipManager.reset(); clusterHeartbeatManager.reset(); clusterStateManager.reset(); clusterJoinManager.reset(); resetJoinState(); } finally { lock.unlock(); } }
private boolean isValidJoinMessage(Object msg) { if (!isJoinMessage(msg)) { return false; } JoinMessage joinMessage = (JoinMessage) msg; if (isMessageToSelf(joinMessage)) { return false; } ConfigCheck theirConfig = joinMessage.getConfigCheck(); if (!ourConfig.isSameGroup(theirConfig)) { return false; } return true; }
private boolean shouldClaimMastership(MemberMap memberMap) { if (clusterService.isMaster()) { return false; } for (MemberImpl m : memberMap.headMemberSet(clusterService.getLocalMember(), false)) { if (!isMemberSuspected(m.getAddress())) { return false; } } return true; }
/** * Sends a split brain join request to the target address and checks the response to see if this node should merge * to the target address. */ protected final SplitBrainMergeCheckResult sendSplitBrainJoinMessageAndCheckResponse(Address target, SplitBrainJoinMessage request) { SplitBrainJoinMessage response = sendSplitBrainJoinMessage(target, request); return clusterService.getClusterJoinManager().shouldMerge(response); }
public MulticastJoiner(Node node) { super(node); maxTryCount = new AtomicInteger(calculateTryCount()); node.multicastService.addMulticastListener(new SplitBrainMulticastListener(node, splitBrainJoinMessages)); }
private void verifyJoiner(ConfigCheck found) { if (!equals(joinerType, found.joinerType)) { throw new ConfigMismatchException("Incompatible joiners! expected: " + joinerType + ", found: " + found.joinerType); } }
@Override public Collection<Member> getMembers(MemberSelector selector) { return (Collection) new MemberSelectingCollection(membershipManager.getMembers(), selector); }