private void removeMembersFromCollectionIfNotInView(Collection<InternalDistributedMember> members, NetView currentView) { Iterator<InternalDistributedMember> iterator = members.iterator(); while (iterator.hasNext()) { if (!currentView.contains(iterator.next())) { iterator.remove(); } } }
/** * returns the members of this views crashedMembers collection * that were members of the given view. Admin-only members are * not counted */ public Set<InternalDistributedMember> getActualCrashedMembers(NetView oldView) { Set<InternalDistributedMember> result = new HashSet<>(this.crashedMembers.size()); for (InternalDistributedMember mbr : this.crashedMembers) { if ((mbr.getVmKind() != DistributionManager.ADMIN_ONLY_DM_TYPE)) { if (oldView == null || oldView.contains(mbr)) { result.add(mbr); } } } return result; }
public synchronized void installView(NetView newView) { synchronized (viewVsSuspectedMembers) { viewVsSuspectedMembers.clear(); } for (Iterator<InternalDistributedMember> it=memberTimeStamps.keySet().iterator(); it.hasNext(); ) { if (!newView.contains(it.next())) { it.remove(); } } for (Iterator<InternalDistributedMember> it=suspectedMemberInView.keySet().iterator(); it.hasNext(); ) { if (!newView.contains(it.next())) { it.remove(); } } // for (InternalDistributedMember mbr: newView.getMembers()) { // if (!memberVsLastMsgTS.containsKey(mbr)) { // CustomTimeStamp customTS = new CustomTimeStamp(System.currentTimeMillis()); // memberVsLastMsgTS.put(mbr, customTS); // } // } currentView = newView; setNextNeighbor(newView, null); }
public boolean done() { return !getMembershipManager(sys).getView().contains(member); } public String description() {
else if (latestView.contains(remoteId)) {
else if (latestView.contains(remoteId)) {
if (latestView.contains(mm)) {
InternalDistributedMember mm = (InternalDistributedMember)e.getKey(); if (latestView.contains(mm)) {
if (validated && !this.latestView.contains(result)) {
isNew = !latestView.contains(m) && !surpriseMembers.containsKey(m);
/** * logs the weight of failed members wrt the given previous * view */ public void logCrashedMemberWeights(NetView oldView, Logger log) { InternalDistributedMember lead = oldView.getLeadMember(); for (InternalDistributedMember mbr : this.crashedMembers) { if (!oldView.contains(mbr)) { continue; } int mbrWeight = mbr.getNetMember().getMemberWeight(); switch (mbr.getVmKind()) { case DistributionManager.NORMAL_DM_TYPE: if (lead != null && mbr.equals(lead)) { mbrWeight += 15; } else { mbrWeight += 10; } break; case DistributionManager.LOCATOR_DM_TYPE: mbrWeight += 3; break; case DistributionManager.ADMIN_ONLY_DM_TYPE: break; default: throw new IllegalStateException("Unknown member type: " + mbr.getVmKind()); } log.info(" " + mbr + " had a weight of " + mbrWeight); } }
if (latestView.contains(member)) { NetView newView = new NetView(latestView, latestView.getViewNumber()); newView.remove(member);
/** * Transfer the failure-detection ports from another view to this one * @param otherView */ public void setFailureDetectionPorts(NetView otherView) { int[] ports = otherView.getFailureDetectionPorts(); if (ports != null) { int idx = 0; int portsSize = ports.length; for (InternalDistributedMember mbr: otherView.getMembers()) { if (contains(mbr)) { // unit tests create views w/o failure detection ports, so we must check the length // of the array if (idx < portsSize) { setFailureDetectionPort(mbr, ports[idx]); } else { setFailureDetectionPort(mbr, -1); } } idx += 1; } } }
/** * returns the weight of crashed members in this membership view * with respect to the given previous view */ public int getCrashedMemberWeight(NetView oldView) { int result = 0; InternalDistributedMember lead = oldView.getLeadMember(); for (InternalDistributedMember mbr : this.crashedMembers) { if (!oldView.contains(mbr)) { continue; } result += mbr.getNetMember().getMemberWeight(); switch (mbr.getVmKind()) { case DistributionManager.NORMAL_DM_TYPE: result += 10; if (lead != null && mbr.equals(lead)) { result += 5; } break; case DistributionManager.LOCATOR_DM_TYPE: result += 3; break; case DistributionManager.ADMIN_ONLY_DM_TYPE: break; default: throw new IllegalStateException("Unknown member type: " + mbr.getVmKind()); } } return result; }
@Override public void remove(InternalDistributedMember m, String reason) { NetView v = this.currentView; services.getCancelCriterion().checkCancelInProgress(null); if (v != null && v.contains(m)) { Set<InternalDistributedMember> filter = new HashSet<>(); filter.add(m); RemoveMemberMessage msg = new RemoveMemberMessage(v.getPreferredCoordinators(filter, getMemberID(), 5), m, reason); msg.setSender(this.localAddress); processRemoveRequest(msg); if (!this.isCoordinator) { msg.resetRecipients(); msg.setRecipients(v.getPreferredCoordinators(Collections.<InternalDistributedMember> emptySet(), localAddress, 10)); services.getMessenger().send(msg); } } }
private void ackView(InstallViewMessage m) { if (!playingDead && m.getView().contains(m.getView().getCreator())) { services.getMessenger().send(new ViewAckMessage(m.getSender(), m.getView().getViewId(), m.isPreparing())); } }
if (v != null && !v.contains(incomingRequest.getSender())) { logger.info("Membership ignoring removal request for " + mbr + " from non-member " + incomingRequest.getSender()); return;
isNew = !latestView.contains(m) && !surpriseMembers.containsKey(m);
if (!v.contains(mbr) && mbr.getVmViewId() < v.getViewId()) { logger.debug("ignoring leave request from old member"); return;
if (isJoined && currentView != null && !view.contains(this.localAddress)) { forceDisconnect("This node is no longer in the membership view"); } else {