/** Unicast entry */ protected Entry(Address member) { this.target=member; this.ack_collector=new AckCollector(member); this.timestamp=System.nanoTime(); }
protected void ack(Address member) {ack_collector.ack(member);} protected boolean retainAll(Collection<Address> members) {return ack_collector.retainAll(members);}
public AckCollector(Address ... members) { missing_acks=new ArrayList<>(members != null? members.length : 10); addAll(members); }
public String toString() { return suspected_mbrs.isEmpty() ? printMissing() : printMissing() + " (suspected: " + printSuspected() + ")"; }
public void sendJoinResponses(JoinRsp jr, Collection<Address> newMembers) { if(jr != null && newMembers != null && !newMembers.isEmpty()) { final ViewId view_id=jr.getView().getViewId(); ack_collector.reset(new ArrayList<>(newMembers)); for(Address joiner: newMembers) sendJoinResponse(jr, joiner); try { ack_collector.waitForAllAcks(view_ack_collection_timeout); log.trace("%s: got all ACKs (%d) from joiners for view %s", local_addr, ack_collector.expectedAcks(), view_id); } catch(TimeoutException e) { if(log_collect_msgs) log.warn("%s: failed to collect all ACKs (expected=%d) for unicast view %s after %dms, missing %d ACKs from %s", local_addr, ack_collector.expectedAcks(), view_id, view_ack_collection_timeout, ack_collector.size(), ack_collector.printMissing()); } } }
results.reset(getSenders()); ack_collector.reset(channel.getView().getMembers()); ack_collector.waitForAllAcks(5000);
ack_collector.ack(sender); return null; // don't pass further up merge_ack_collector.ack(msg.getSrc()); break; Address suspected=(Address)evt.getArg(); view_handler.add(new Request(Request.SUSPECT, suspected, true)); ack_collector.suspect(suspected); merge_ack_collector.suspect(suspected); return retval;
protected int size() {return ack_collector.size();} protected void block(long timeout) throws TimeoutException {ack_collector.waitForAllAcks(timeout);}
protected boolean retainAll(Collection<Address> members) {return ack_collector.retainAll(members);} protected int size() {return ack_collector.size();}
protected void destroy() {ack_collector.destroy();} public String toString() {return ack_collector.toString();}
public void sendJoinResponses(JoinRsp jr, Collection<Address> newMembers) { if(jr != null && newMembers != null && !newMembers.isEmpty()) { final ViewId view_id=jr.getView().getViewId(); ack_collector.reset(new ArrayList<>(newMembers)); for(Address joiner: newMembers) sendJoinResponse(jr, joiner); try { ack_collector.waitForAllAcks(view_ack_collection_timeout); log.trace("%s: got all ACKs (%d) from joiners for view %s", local_addr, ack_collector.expectedAcks(), view_id); } catch(TimeoutException e) { if(log_collect_msgs) log.warn("%s: failed to collect all ACKs (expected=%d) for unicast view %s after %dms, missing %d ACKs from %s", local_addr, ack_collector.expectedAcks(), view_id, view_ack_collection_timeout, ack_collector.size(), ack_collector.printMissing()); } } }
public String toString() { return suspected_mbrs.isEmpty() ? printMissing() : printMissing() + " (suspected: " + printSuspected() + ")"; }
results.reset(getSenders()); ack_collector.reset(channel.getView().getMembers()); ack_collector.waitForAllAcks(5000);
ack_collector.ack(sender); return null; // don't pass further up merge_ack_collector.ack(msg.getSrc()); break; Address suspected=(Address)evt.getArg(); view_handler.add(new Request(Request.SUSPECT, suspected, true)); ack_collector.suspect(suspected); merge_ack_collector.suspect(suspected); return retval;
protected int size() {return ack_collector.size();} protected void block(long timeout) throws TimeoutException {ack_collector.waitForAllAcks(timeout);}
protected boolean retainAll(Collection<Address> members) {return ack_collector.retainAll(members);} protected int size() {return ack_collector.size();}
protected void destroy() {ack_collector.destroy();} public String toString() {return ack_collector.toString();}
public void sendJoinResponses(JoinRsp jr, Collection<Address> newMembers) { if(jr != null && newMembers != null && !newMembers.isEmpty()) { final ViewId view_id=jr.getView().getViewId(); ack_collector.reset(new ArrayList<>(newMembers)); for(Address joiner: newMembers) sendJoinResponse(jr, joiner); try { ack_collector.waitForAllAcks(view_ack_collection_timeout); log.trace("%s: got all ACKs (%d) from joiners for view %s", local_addr, ack_collector.expectedAcks(), view_id); } catch(TimeoutException e) { if(log_collect_msgs) log.warn("%s: failed to collect all ACKs (expected=%d) for unicast view %s after %dms, missing %d ACKs from %s", local_addr, ack_collector.expectedAcks(), view_id, view_ack_collection_timeout, ack_collector.size(), ack_collector.printMissing()); } } }