void execute(Runnable command, boolean can_block);
protected synchronized void startCacheDissemination(List<Address> curr_mbrs, List<Address> left_mbrs, List<Address> new_mbrs) { timer.execute(new DiscoveryCacheDisseminationTask(curr_mbrs,left_mbrs,new_mbrs), sends_can_block); }
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); } }
protected void sendViewOnLocalCluster(ViewData data, boolean use_seperate_thread, final List<Address> new_mbrs) { try { final byte[] buffer=Util.streamableToByteBuffer(data); final List<Address> destinations=new ArrayList<>(); destinations.add(null); // send to all if(new_mbrs != null) destinations.addAll(new_mbrs); if(use_seperate_thread) { timer.execute(() -> sendViewOnLocalCluster(destinations, buffer)); } else sendViewOnLocalCluster(destinations, buffer); } catch(Exception e) { log.error(Util.getMessage("FailedSendingViewToLocalCluster"), e); } }
public Responses findMembers(final List<Address> members, final boolean initial_discovery, boolean async, long timeout) { num_discovery_requests++; int num_expected=members != null? members.size() : 0; int capacity=members != null? members.size() : 16; Responses rsps=new Responses(num_expected, initial_discovery && break_on_coord_rsp, capacity); addResponse(rsps); if(async || async_discovery || (num_discovery_runs > 1) && initial_discovery) { timer.execute(() -> invokeFindMembers(members, initial_discovery, rsps, async)); if(num_discovery_runs > 1 && initial_discovery) { int num_reqs_to_send=num_discovery_runs-1; long last_send=timeout - (timeout/num_discovery_runs); long interval=last_send/num_reqs_to_send; for(long i=0,delay=interval; i < num_reqs_to_send; i++,delay+=interval) { Future<?> future=timer.schedule(() -> invokeFindMembers(members, initial_discovery, rsps, async), delay, TimeUnit.MILLISECONDS); this.discovery_req_futures.add(future); num_discovery_requests++; } } } else invokeFindMembers(members, initial_discovery, rsps, async); weedOutCompletedDiscoveryResponses(); return rsps; }
timer.execute(() -> sendDiscoveryRequest(msg), sends_can_block); else sendDiscoveryRequest(msg);
final Relayer tmp=relayer; if(async_relay_creation) timer.execute(() -> startRelayer(tmp, bridge_name)); else startRelayer(relayer, bridge_name);
timer.execute(() -> sendDiscoveryRequest(msg), sends_can_block); else sendDiscoveryRequest(msg);
protected void sendViewToRemote(ViewData view_data, boolean use_seperate_thread) { try { if(bridge != null && bridge.isConnected()) { byte[] buf=Util.streamableToByteBuffer(view_data); final Message msg=new Message(null, buf).putHeader(id, RelayHeader.create(RelayHeader.Type.VIEW)); if(use_seperate_thread) { timer.execute(() -> { try { bridge.send(msg); } catch(Exception e) { log.error(Util.getMessage("FailedSendingViewToRemote"), e); } }); } else bridge.send(msg); } } catch(Exception e) { log.error(Util.getMessage("FailedSendingViewToRemote"), e); } }
timer.execute(r, getTransport() instanceof TCP);
void execute(Runnable command, boolean can_block);
protected synchronized void startCacheDissemination(List<Address> curr_mbrs, List<Address> left_mbrs, List<Address> new_mbrs) { timer.execute(new DiscoveryCacheDisseminationTask(curr_mbrs,left_mbrs,new_mbrs), sends_can_block); }
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; }
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); } }
protected void sendViewOnLocalCluster(ViewData data, boolean use_seperate_thread, final List<Address> new_mbrs) { try { final byte[] buffer=Util.streamableToByteBuffer(data); final List<Address> destinations=new ArrayList<>(); destinations.add(null); // send to all if(new_mbrs != null) destinations.addAll(new_mbrs); if(use_seperate_thread) { timer.execute(() -> sendViewOnLocalCluster(destinations, buffer)); } else sendViewOnLocalCluster(destinations, buffer); } catch(Exception e) { log.error(Util.getMessage("FailedSendingViewToLocalCluster"), e); } }
@Override protected void sendMcastDiscoveryRequest(Message msg) { List<InetSocketAddress> nodes = readAll(); if (nodes == null) { return; } if (msg.getSrc() == null) { setSrc(msg); } for (InetSocketAddress node : nodes) { // forward the request to each node timer.execute(new SendDiscoveryRequest(node, msg)); } }
@Override protected void sendMcastDiscoveryRequest(Message msg) { List<InetSocketAddress> nodes = readAll(); if (nodes == null) { return; } if (msg.getSrc() == null) { msg.setSrc(local_addr); } for (InetSocketAddress node : nodes) { // forward the request to each node timer.execute(new SendDiscoveryRequest(node, msg)); } }
/** * Bcasts a STABLE message of the current digest to all members. Message contains highest seqnos of all members * seen by this member. Highest seqnos are retrieved from the NAKACK layer below. * @param d A <em>copy</em> of this.digest */ private void sendStableMessage(Digest d) { if(suspended) { if(log.isTraceEnabled()) log.trace("will not send STABLE message as I'm suspended"); return; } if(d != null && d.size() > 0) { if(log.isTraceEnabled()) log.trace("sending stable msg " + d.printHighestDeliveredSeqnos()); num_stable_msgs_sent++; final Message msg=new Message(); // mcast message msg.setFlag(Message.OOB); StableHeader hdr=new StableHeader(StableHeader.STABLE_GOSSIP, d); msg.putHeader(name, hdr); Runnable r=new Runnable() { public void run() { down_prot.down(new Event(Event.MSG, msg)); } }; // Run in a separate thread so we don't potentially block (http://jira.jboss.com/jira/browse/JGRP-532) timer.execute(r); // down_prot.down(new Event(Event.MSG, msg)); } }
final Relayer tmp=relayer; if(async_relay_creation) timer.execute(() -> startRelayer(tmp, bridge_name)); else startRelayer(relayer, bridge_name);
protected void sendViewToRemote(ViewData view_data, boolean use_seperate_thread) { try { if(bridge != null && bridge.isConnected()) { byte[] buf=Util.streamableToByteBuffer(view_data); final Message msg=new Message(null, buf).putHeader(id, RelayHeader.create(RelayHeader.Type.VIEW)); if(use_seperate_thread) { timer.execute(() -> { try { bridge.send(msg); } catch(Exception e) { log.error(Util.getMessage("FailedSendingViewToRemote"), e); } }); } else bridge.send(msg); } } catch(Exception e) { log.error(Util.getMessage("FailedSendingViewToRemote"), e); } }