public MemberInfo(MemberImpl member) { this(member.getAddress(), member.getUuid(), member.getAttributes(), member.isLiteMember(), member.getVersion(), member.getMemberListJoinVersion()); }
public IdentifiedDataSerializable createNew(Integer arg) { return new MemberImpl(); } };
private Set<Member> collectMembersToAsk(MemberMap localMemberMap) { Set<Member> membersToAsk = new HashSet<Member>(); for (MemberImpl member : localMemberMap.getMembers()) { if (member.localMember() || suspectedMembers.contains(member.getAddress())) { continue; } membersToAsk.add(member); } return membersToAsk; }
private boolean hasTargetLeft(Invocation invocation) { MemberImpl targetMember = invocation.targetMember; if (targetMember == null) { Address invTarget = invocation.invTarget; return leftMember.getAddress().equals(invTarget); } else { return leftMember.getUuid().equals(targetMember.getUuid()); } }
if (!member.isLiteMember()) { if (logger.isFineEnabled()) { logger.fine(member + " is not lite member, no promotion is required."); MemberImpl[] members = memberMap.getMembers().toArray(new MemberImpl[0]); for (int i = 0; i < members.length; i++) { if (member.equals(members[i])) { if (member.localMember()) { member = clusterService.promoteAndGetLocalMember(); } else { member = new MemberImpl(member.getAddress(), member.getVersion(), member.localMember(), member.getUuid(), member.getAttributes(), false, members[i].getMemberListJoinVersion(), node.hazelcastInstance);
MemberImpl member = currentMemberMap.getMember(address); if (member != null && member.getUuid().equals(memberInfo.getUuid())) { member = createNewMemberImplIfChanged(memberInfo, member); members[memberIndex++] = member; assert !(member.localMember() && member.equals(clusterService.getLocalMember())) : "Local " + member + " cannot be replaced with " + memberInfo; if (!newMemberMap.contains(member.getAddress())) { removedMembers.add(member); closeConnection(member.getAddress(), "Member left event received from master"); handleMemberRemove(memberMapRef.get(), member);
private MemberImpl createNewMemberImplIfChanged(MemberInfo newMemberInfo, MemberImpl member) { if (member.isLiteMember() && !newMemberInfo.isLiteMember()) { // lite member promoted logger.info(member + " is promoted to normal member."); if (member.localMember()) { member = clusterService.promoteAndGetLocalMember(); } else { member = createMember(newMemberInfo, member.getAttributes()); } } else if (member.getMemberListJoinVersion() != newMemberInfo.getMemberListJoinVersion()) { if (member.getMemberListJoinVersion() != NA_MEMBER_LIST_JOIN_VERSION) { if (logger.isFineEnabled()) { logger.fine("Member list join version of " + member + " is changed to " + newMemberInfo.getMemberListJoinVersion() + " from " + member.getMemberListJoinVersion()); } } if (member.localMember()) { setLocalMemberListJoinVersion(newMemberInfo.getMemberListJoinVersion()); member = clusterService.getLocalMember(); } else { member = createMember(newMemberInfo, member.getAttributes()); } } return member; }
/** 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()); } }
public void setThisMember(MemberImpl thisMember) { this.thisMember = thisMember; this.thisAddressString = "[" + thisMember.getAddress().getHost() + "]:" + thisMember.getAddress().getPort() + " "; }
public JoinRequest createJoinRequest(boolean withCredentials) { final Credentials credentials = (withCredentials && securityContext != null) ? securityContext.getCredentialsFactory().newCredentials() : null; final Set<String> excludedMemberUuids = nodeExtension.getInternalHotRestartService().getExcludedMemberUuids(); MemberImpl localMember = getLocalMember(); return new JoinRequest(Packet.VERSION, buildInfo.getBuildNumber(), version, address, localMember.getUuid(), localMember.isLiteMember(), createConfigCheck(), credentials, localMember.getAttributes(), excludedMemberUuids); }
@Override public void removeAttribute(String key) { ensureLocalMember(); isNotNull(key, "key"); Object value = attributes.remove(key); if (value == null) { return; } if (instance != null) { invokeOnAllMembers(new MemberAttributeOperationSupplier(REMOVE, key, null)); } }
@Override public Boolean getBooleanAttribute(String key) { return (Boolean) getAttribute(key); }
@Override public void memberRemoved(MembershipServiceEvent event) { if (event.getMember().localMember()) { return; } final String deadMemberUuid = event.getMember().getUuid(); try { nodeEngine.getExecutionService().schedule(new DestroyEndpointTask(deadMemberUuid), endpointRemoveDelaySeconds, TimeUnit.SECONDS); } catch (RejectedExecutionException e) { if (logger.isFinestEnabled()) { logger.finest(e); } } }
void suspectMember(MemberImpl suspectedMember, String reason, boolean shouldCloseConn) { assert !suspectedMember.equals(clusterService.getLocalMember()) : "Cannot suspect from myself!"; assert !suspectedMember.localMember() : "Cannot be local member";
public int getMemberIndex(MemberImpl member) { int i = 0; for (MemberImpl m : members) { if (m.equals(member)) { return i; } i++; } throw new IllegalArgumentException(member + " is not present in " + members); }
public void updateMemberAttribute(String uuid, MemberAttributeOperationType operationType, String key, Object value) { lock.lock(); try { MemberImpl member = membershipManager.getMember(uuid); if (!member.equals(getLocalMember())) { member.updateAttribute(operationType, key, value); } sendMemberAttributeEvent(member, operationType, key, value); } finally { lock.unlock(); } }
public SplitBrainJoinMessage createSplitBrainJoinMessage() { MemberImpl localMember = getLocalMember(); boolean liteMember = localMember.isLiteMember(); Collection<Address> memberAddresses = clusterService.getMemberAddresses(); int dataMemberCount = clusterService.getSize(DATA_MEMBER_SELECTOR); Version clusterVersion = clusterService.getClusterVersion(); int memberListVersion = clusterService.getMembershipManager().getMemberListVersion(); return new SplitBrainJoinMessage(Packet.VERSION, buildInfo.getBuildNumber(), version, address, localMember.getUuid(), liteMember, createConfigCheck(), memberAddresses, dataMemberCount, clusterVersion, memberListVersion); }
private boolean hasParticipant(String uuid) { // a member is a participant when it is a master member (that's we) or it's in the execution plan return nodeEngine.getLocalMember().getUuid().equals(uuid) || executionPlanMap != null && executionPlanMap.keySet().stream().anyMatch(mi -> mi.getUuid().equals(uuid)); }
void setLocalMemberListJoinVersion(int memberListJoinVersion) { MemberImpl localMember = clusterService.getLocalMember(); if (memberListJoinVersion != NA_MEMBER_LIST_JOIN_VERSION) { localMember.setMemberListJoinVersion(memberListJoinVersion); if (logger.isFineEnabled()) { logger.fine("Local member list join version is set to " + memberListJoinVersion); } } else if (logger.isFineEnabled()) { logger.fine("No member list join version is available during join. Local member list join version: " + localMember.getMemberListJoinVersion()); } }
@Override public void memberAdded(MemberImpl member) { logger.fine("Adding " + member); lock.lock(); try { lastMaster = node.getClusterService().getMasterAddress(); if (!member.localMember()) { partitionStateManager.updateMemberGroupsSize(); } if (node.isMaster()) { if (partitionStateManager.isInitialized()) { migrationManager.triggerControlTask(); } } } finally { lock.unlock(); } }