protected void ack(Address member) {ack_collector.ack(member);} protected boolean retainAll(Collection<Address> members) {return ack_collector.retainAll(members);}
public String toString() { return suspected_mbrs.isEmpty() ? printMissing() : printMissing() + " (suspected: " + printSuspected() + ")"; }
protected int size() {return ack_collector.size();} protected void block(long timeout) throws TimeoutException {ack_collector.waitForAllAcks(timeout);}
view_change_msg.setFlag(Message.Flag.NO_TOTAL_ORDER); ack_collector.reset(expected_acks, local_addr); // exclude self, as we'll install the view locally long start=System.currentTimeMillis(); sendJoinResponses(jr, joiners); try { if(ack_collector.size() > 0) { ack_collector.waitForAllAcks(view_ack_collection_timeout); log.trace("%s: got all ACKs (%d) for view %s in %d ms", local_addr, ack_collector.expectedAcks(), new_view.getViewId(), System.currentTimeMillis()-start); if(log_collect_msgs); log.warn("%s: failed to collect all ACKs (expected=%d) for view %s after %dms, missing %d ACKs from %s", local_addr, ack_collector.expectedAcks(), new_view.getViewId(), view_ack_collection_timeout, ack_collector.size(), ack_collector.printMissing());
results.reset(getSenders()); ack_collector.reset(channel.getView().getMembers()); ack_collector.waitForAllAcks(5000);
public void handleMembershipChange(Collection<Request> requests) { Collection<Address> leaving_mbrs=new LinkedHashSet<>(requests.size()); requests.forEach(r -> { if(r.type == Request.SUSPECT) suspected_mbrs.add(r.mbr); else if(r.type == Request.LEAVE) leaving_mbrs.add(r.mbr); }); if(suspected_mbrs.isEmpty() && leaving_mbrs.isEmpty()) return; if(wouldIBeCoordinator(leaving_mbrs)) { log.debug("%s: members are %s, coord=%s: I'm the new coordinator", gms.local_addr, gms.members, gms.local_addr); gms.becomeCoordinator(); Collection<Request> leavingOrSuspectedMembers=new LinkedHashSet<>(); leaving_mbrs.forEach(mbr -> leavingOrSuspectedMembers.add(new Request(Request.LEAVE, mbr))); suspected_mbrs.forEach(mbr -> { leavingOrSuspectedMembers.add(new Request(Request.SUSPECT, mbr)); gms.ack_collector.suspect(mbr); }); suspected_mbrs.clear(); gms.getViewHandler().add(leavingOrSuspectedMembers); } }
public AckCollector(Address ... members) { missing_acks=new ArrayList<>(members != null? members.length : 10); addAll(members); }
public String toString() { return "missing=" + printMissing() + ", received=" + printReceived(); } }
protected void block(long timeout) throws TimeoutException {ack_collector.waitForAllAcks(timeout);} protected void destroy() {ack_collector.destroy();}
/** Unicast entry */ protected Entry(Address member) { this.target=member; this.ack_collector=new AckCollector(member); this.timestamp=System.nanoTime(); }
protected void destroy() {ack_collector.destroy();} public String toString() {return ack_collector.toString();}
gms.merge_ack_collector.reset(coords); size=gms.merge_ack_collector.size(); gms.merge_ack_collector.waitForAllAcks(gms.view_ack_collection_timeout); log.trace("%s: received all ACKs (%d) for merge view %s in %d ms", gms.local_addr, size, view, (System.currentTimeMillis() - start)); gms.local_addr, size, view, gms.view_ack_collection_timeout, gms.merge_ack_collector.printMissing());
results.reset(getSenders()); ack_collector.reset(channel.getView().getMembers()); ack_collector.waitForAllAcks(5000);
public Object up(Event evt) { switch(evt.getType()) { case Event.SUSPECT: Object retval=up_prot.up(evt); // todo: change this to only accept lists in 4.1 Collection<Address> suspects=evt.arg() instanceof Address? Collections.singletonList(evt.arg()) : evt.arg(); Request[] suspect_reqs=new Request[suspects.size()]; int index=0; for(Address mbr: suspects) suspect_reqs[index++]=new Request(Request.SUSPECT, mbr); view_handler.add(suspect_reqs); ack_collector.suspect(suspects); merge_ack_collector.suspect(suspects); return retval; case Event.UNSUSPECT: impl.unsuspect(evt.getArg()); return null; // discard case Event.MERGE: view_handler.add(new Request(Request.MERGE, null, evt.getArg())); return null; // don't pass up case Event.IS_MERGE_IN_PROGRESS: return merger.isMergeInProgress(); } return up_prot.up(evt); }
public AckCollector(Collection<Address> members) { missing_acks=new ArrayList<>(members != null? members.size() : 10); addAll(members); }
protected void block(long timeout) throws TimeoutException {ack_collector.waitForAllAcks(timeout);} protected void destroy() {ack_collector.destroy();}
/** Multicast entry */ protected Entry(Collection<Address> members) { this.target=null; this.ack_collector=new AckCollector(members); this.timestamp=System.nanoTime(); }