void sendCurrentView() { NetView v = currentView; if (v != null) { InstallViewMessage msg = new InstallViewMessage(v, services.getAuthenticator().getCredentials(localAddress)); Collection<InternalDistributedMember> recips = new ArrayList<>(v.size() + v.getCrashedMembers().size()); recips.addAll(v.getMembers()); recips.remove(localAddress); recips.addAll(v.getCrashedMembers()); msg.setRecipients(recips); // use sendUnreliably since we are sending to crashed members & // don't want any retransmission tasks set up for them services.getMessenger().sendUnreliably(msg); } }
if (!view.getCrashedMembers().isEmpty()) { recips = new HashSet<>(recips); recips.addAll(view.getCrashedMembers()); pendingRemovals.removeAll(view.getCrashedMembers()); rp.initialize(id, responders); rp.processPendingRequests(pendingLeaves, pendingRemovals);
prepareAndSendView(newView, joinReqs, leaveReqs, newView.getCrashedMembers());
List<InternalDistributedMember> failures = new ArrayList<>(currentView.getCrashedMembers().size() + unresponsive.size()); logger.info("adding these crashed members from a conflicting view to the crash-set for the next view: {}\nconflicting view: {}", unresponsive, conflictingView); failures.addAll(conflictingView.getCrashedMembers());
newView.getCrashedMembers().contains(m) || suspectedMembers.containsKey(m) , "departed membership view");
msg.append(newViewId).append(") {"); msg.append(DistributionManager.printView(newView)); if (newView.getCrashedMembers().size() > 0) { msg.append(" with unexpected departures ["); for (Iterator it=newView.getCrashedMembers().iterator(); it.hasNext(); ) { msg.append(it.next()); if (it.hasNext()) { newView.getCrashedMembers().contains(m) || suspectedMembers.containsKey(m) , "departed JGroups view");