/** Calls {@link #findMembers(List, boolean, Responses)} */ protected void invokeFindMembers(List<Address> members, boolean initial_discovery, Responses rsps, boolean async) { findMembers(members, initial_discovery, rsps); // ignores 'async' parameter }
protected void findMembers(List<Address> members, boolean initial_discovery, Responses rsps, boolean async) { for(Discovery discovery_protocol: discovery_protocols) { discovery_protocol.addResponse(rsps); if(async || async_discovery) timer.execute(() -> discovery_protocol.findMembers(members, initial_discovery, rsps)); else discovery_protocol.findMembers(members, initial_discovery, rsps); } }
@ManagedOperation(description="Runs the discovery protocol to find initial members") public String findInitialMembersAsString() { Responses rsps=findMembers(null, false, false, 0); if(!rsps.isDone()) rsps.waitFor(300); if(rsps.isEmpty()) return "<empty>"; StringBuilder sb=new StringBuilder(); for(PingData rsp: rsps) sb.append(rsp).append("\n"); return sb.toString(); }
public Object up(Event evt) { switch(evt.getType()) { case Event.FIND_MBRS: return findMembers(evt.getArg(), false, true, 0); // this is done asynchronously } return up_prot.up(evt); }
case Event.FIND_INITIAL_MBRS: // sent by GMS layer long timeout=evt.getArg(); return findMembers(null, true, false, timeout); // triggered by JOIN process (ClientGmsImpl) return findMembers(evt.getArg(), false, false, 0); // triggered by MERGE3 return findMembers(null, false, false, 0); // triggered by MERGE3
protected void findMembers(List<Address> members, boolean initial_discovery, Responses rsps, boolean async) { for(Discovery discovery_protocol: discovery_protocols) { discovery_protocol.addResponse(rsps); if(async || async_discovery) timer.execute(() -> discovery_protocol.findMembers(members, initial_discovery, rsps)); else discovery_protocol.findMembers(members, initial_discovery, rsps); } }
public Responses findMembers(final List<Address> members, final boolean initial_discovery, boolean async) { num_discovery_requests++; int num_expected=members != null? members.size() : 0; int capacity=members != null? members.size() : 16; final Responses rsps=new Responses(num_expected, initial_discovery && break_on_coord_rsp, capacity); synchronized(ping_responses) { ping_responses.put(System.nanoTime(), rsps); } if(async || async_discovery) timer.execute(() -> findMembers(members, initial_discovery, rsps)); else findMembers(members, initial_discovery, rsps); weedOutCompletedDiscoveryResponses(); return rsps; }
@ManagedOperation(description="Runs the discovery protocol to find initial members") public String findInitialMembersAsString() { Responses rsps=findMembers(null, false, false); if(!rsps.isDone()) rsps.waitFor(300); if(rsps.isEmpty()) return "<empty>"; StringBuilder sb=new StringBuilder(); for(PingData rsp: rsps) sb.append(rsp).append("\n"); return sb.toString(); }
public Object up(Event evt) { switch(evt.getType()) { case Event.FIND_MBRS: return findMembers(evt.getArg(), false, true); // this is done asynchronously } return up_prot.up(evt); }
switch(evt.getType()) { case Event.FIND_INITIAL_MBRS: // sent by GMS layer return findMembers(null, true, false); // triggered by JOIN process (ClientGmsImpl) return findMembers(evt.getArg(), false, false); // triggered by MERGE3 return findMembers(null, false, false); // triggered by MERGE3