@Override public void changeClusterVersion(Version version) { MemberMap memberMap = membershipManager.getMemberMap(); changeClusterVersion(version, memberMap); }
String memberListString() { MemberMap memberMap = getMemberMap(); Collection<MemberImpl> members = memberMap.getMembers(); StringBuilder sb = new StringBuilder("\n\nMembers {") .append("size:").append(members.size()).append(", ") .append("ver:").append(memberMap.getVersion()) .append("} ["); for (Member member : members) { sb.append("\n\t").append(member); } sb.append("\n]\n"); return sb.toString(); }
public Collection<Address> getMemberAddresses() { return membershipManager.getMemberMap().getAddresses(); }
public Collection<Address> getMemberAddresses() { return membershipManager.getMemberMap().getAddresses(); }
String memberListString() { MemberMap memberMap = getMemberMap(); Collection<MemberImpl> members = memberMap.getMembers(); StringBuilder sb = new StringBuilder("\n\nMembers {") .append("size:").append(members.size()).append(", ") .append("ver:").append(memberMap.getVersion()) .append("} ["); for (Member member : members) { sb.append("\n\t").append(member); } sb.append("\n]\n"); return sb.toString(); }
@Probe @Override public int getSize() { return membershipManager.getMemberMap().size(); }
@Probe @Override public int getSize() { return membershipManager.getMemberMap().size(); }
boolean clearMemberSuspicion(Address address, String reason) { clusterServiceLock.lock(); try { if (!suspectedMembers.contains(address)) { return true; } MemberMap memberMap = getMemberMap(); Address masterAddress = clusterService.getMasterAddress(); if (memberMap.isBeforeThan(address, masterAddress)) { if (logger.isFineEnabled()) { logger.fine("Not removing suspicion of " + address + " since it is before than current master " + masterAddress + " in member list."); } return false; } boolean removed = suspectedMembers.remove(address); if (removed && logger.isInfoEnabled()) { logger.info("Removed suspicion from " + address + ". Reason: " + reason); } } finally { clusterServiceLock.unlock(); } return true; }
private void changeClusterState(ClusterState newState, boolean isTransient) { int partitionStateVersion = node.getPartitionService().getPartitionStateVersion(); clusterStateManager.changeClusterState(ClusterStateChange.from(newState), membershipManager.getMemberMap(), partitionStateVersion, isTransient); }
private void changeClusterState(ClusterState newState, TransactionOptions options, boolean isTransient) { int partitionStateVersion = node.getPartitionService().getPartitionStateVersion(); clusterStateManager.changeClusterState(ClusterStateChange.from(newState), membershipManager.getMemberMap(), options, partitionStateVersion, isTransient); }
@Override public void changeClusterVersion(Version version, TransactionOptions options) { int partitionStateVersion = node.getPartitionService().getPartitionStateVersion(); clusterStateManager.changeClusterState(ClusterStateChange.from(version), membershipManager.getMemberMap(), options, partitionStateVersion, false); }
@Override public void changeClusterVersion(Version version) { int partitionStateVersion = node.getPartitionService().getPartitionStateVersion(); clusterStateManager.changeClusterState(ClusterStateChange.from(version), membershipManager.getMemberMap(), partitionStateVersion, false); }
private void changeClusterState(ClusterState newState, TransactionOptions options, boolean isTransient) { int partitionStateVersion = node.getPartitionService().getPartitionStateVersion(); clusterStateManager.changeClusterState(ClusterStateChange.from(newState), membershipManager.getMemberMap(), options, partitionStateVersion, isTransient); }
boolean clearMemberSuspicion(Address address, String reason) { clusterServiceLock.lock(); try { if (!suspectedMembers.contains(address)) { return true; } MemberMap memberMap = getMemberMap(); Address masterAddress = clusterService.getMasterAddress(); if (memberMap.isBeforeThan(address, masterAddress)) { if (logger.isFineEnabled()) { logger.fine("Not removing suspicion of " + address + " since it is before than current master " + masterAddress + " in member list."); } return false; } boolean removed = suspectedMembers.remove(address); if (removed && logger.isInfoEnabled()) { logger.info("Removed suspicion from " + address + ". Reason: " + reason); } } finally { clusterServiceLock.unlock(); } return true; }
private void changeClusterState(ClusterState newState, boolean isTransient) { int partitionStateVersion = node.getPartitionService().getPartitionStateVersion(); clusterStateManager.changeClusterState(ClusterStateChange.from(newState), membershipManager.getMemberMap(), partitionStateVersion, isTransient); }
@Override public void changeClusterVersion(Version version, TransactionOptions options) { int partitionStateVersion = node.getPartitionService().getPartitionStateVersion(); clusterStateManager.changeClusterState(ClusterStateChange.from(version), membershipManager.getMemberMap(), options, partitionStateVersion, false); }
private boolean shouldProcessMemberUpdate(MembersView membersView) { int memberListVersion = membershipManager.getMemberListVersion(); if (memberListVersion > membersView.getVersion()) { if (logger.isFineEnabled()) { logger.fine("Received an older member update, ignoring... Current version: " + memberListVersion + ", Received version: " + membersView.getVersion()); } return false; } if (memberListVersion == membersView.getVersion()) { if (ASSERTION_ENABLED) { MemberMap memberMap = membershipManager.getMemberMap(); Collection<Address> currentAddresses = memberMap.getAddresses(); Collection<Address> newAddresses = membersView.getAddresses(); assert currentAddresses.size() == newAddresses.size() && newAddresses.containsAll(currentAddresses) : "Member view versions are same but new member view doesn't match the current!" + " Current: " + memberMap.toMembersView() + ", New: " + membersView; } if (logger.isFineEnabled()) { logger.fine("Received a periodic member update, ignoring... Version: " + memberListVersion); } return false; } return true; }
private boolean shouldProcessMemberUpdate(MembersView membersView) { int memberListVersion = membershipManager.getMemberListVersion(); if (memberListVersion > membersView.getVersion()) { if (logger.isFineEnabled()) { logger.fine("Received an older member update, ignoring... Current version: " + memberListVersion + ", Received version: " + membersView.getVersion()); } return false; } if (memberListVersion == membersView.getVersion()) { if (ASSERTION_ENABLED) { MemberMap memberMap = membershipManager.getMemberMap(); Collection<Address> currentAddresses = memberMap.getAddresses(); Collection<Address> newAddresses = membersView.getAddresses(); assert currentAddresses.size() == newAddresses.size() && newAddresses.containsAll(currentAddresses) : "Member view versions are same but new member view doesn't match the current!" + " Current: " + memberMap.toMembersView() + ", New: " + membersView; } if (logger.isFineEnabled()) { logger.fine("Received a periodic member update, ignoring... Version: " + memberListVersion); } return false; } return true; }
/** Invoked on the master to send the member list (see {@link MembersUpdateOp}) to non-master nodes. */ private void sendMemberListToOthers() { if (!clusterService.isMaster() || !clusterService.isJoined() || clusterService.getClusterJoinManager().isMastershipClaimInProgress()) { if (logger.isFineEnabled()) { logger.fine("Cannot publish member list to cluster. Is-master: " + clusterService.isMaster() + ", joined: " + clusterService.isJoined() + " , mastership claim in progress: " + clusterService.getClusterJoinManager() .isMastershipClaimInProgress()); } return; } MemberMap memberMap = getMemberMap(); MembersView membersView = memberMap.toMembersView(); if (logger.isFineEnabled()) { logger.fine("Sending member list to the non-master nodes: " + memberListString()); } for (MemberImpl member : memberMap.getMembers()) { if (member.localMember()) { continue; } MembersUpdateOp op = new MembersUpdateOp(member.getUuid(), membersView, clusterService.getClusterTime(), null, false); op.setCallerUuid(clusterService.getThisUuid()); nodeEngine.getOperationService().send(op, member.getAddress()); } }
/** Invoked on the master to send the member list (see {@link MembersUpdateOp}) to non-master nodes. */ private void sendMemberListToOthers() { if (!clusterService.isMaster() || !clusterService.isJoined() || clusterService.getClusterJoinManager().isMastershipClaimInProgress()) { if (logger.isFineEnabled()) { logger.fine("Cannot publish member list to cluster. Is-master: " + clusterService.isMaster() + ", joined: " + clusterService.isJoined() + " , mastership claim in progress: " + clusterService.getClusterJoinManager() .isMastershipClaimInProgress()); } return; } MemberMap memberMap = getMemberMap(); MembersView membersView = memberMap.toMembersView(); if (logger.isFineEnabled()) { logger.fine("Sending member list to the non-master nodes: " + memberListString()); } for (MemberImpl member : memberMap.getMembers()) { if (member.localMember()) { continue; } MembersUpdateOp op = new MembersUpdateOp(member.getUuid(), membersView, clusterService.getClusterTime(), null, false); op.setCallerUuid(clusterService.getThisUuid()); nodeEngine.getOperationService().send(op, member.getAddress()); } }