public void init() throws Exception { super.init(); dynamic_hosts=new BoundedList<>(max_dynamic_hosts); }
public void discoveryRequestReceived(Address sender, String logical_name, PhysicalAddress physical_addr) { super.discoveryRequestReceived(sender, logical_name, physical_addr); if(physical_addr != null && !initial_hosts.contains(physical_addr)) dynamic_hosts.addIfAbsent(physical_addr); }
/** * Flushes the queue. Done in a separate thread as we don't want to block the * {@link ClientGmsImpl#installView(org.jgroups.View,org.jgroups.util.Digest)} method (called when a view is installed). */ protected void flushBecomeServerQueue() { if(become_server_queue != null && !become_server_queue.isEmpty()) { log.trace("%s: flushing become_server_queue (%d elements)", local_addr, become_server_queue.size()); TP transport=getTransport(); for(final Message msg: become_server_queue) { transport.submitToThreadPool(() -> { try { up(msg); } finally { become_server_queue.remove(msg); } }, true); } } }
public void addCondition(String cond) { executions.add(new Date() + ": " + cond); }
localPort=tmp.getLocalPort(); if(last_ports_used == null) last_ports_used=new BoundedList(num_last_ports); if(last_ports_used.contains(new Integer(localPort))) { if(log.isDebugEnabled()) log.debug("local port " + localPort + " already seen in this session; will try to get other port"); last_ports_used.add(new Integer(localPort)); break;
if(!members.contains(dst) && !enabled_members.contains(dst)) { throw new IllegalArgumentException(dst + " is not a member of the group " + members + " (enabled_members=" + enabled_members + ")"); for(Enumeration e=previous_members.elements(); e.hasMoreElements();) { Address mbr=(Address)e.nextElement(); if(members.contains(mbr)) { if(previous_members.removeElement(mbr) != null) { if(log.isTraceEnabled()) log.trace("removed " + mbr + " from previous_members as result of VIEW_CHANGE event, " + enabled_members.removeElement(mbr); for(Enumeration e=previous_members.elements(); e.hasMoreElements();) { Address mbr=(Address)e.nextElement(); enabled_members.removeElement(mbr); if(!enabled_members.contains(member)) enabled_members.add(member); Object obj=previous_members.removeElement(member); if(obj != null && log.isTraceEnabled()) log.trace("removing " + member + " from previous_members as result of ENABLE_UNICAST_TO event, " + member=(Address)evt.getArg(); removeConnection(member); enabled_members.removeElement(member); previous_members.removeElement(member); break;
public void resetStats() { num_heartbeats_sent=num_heartbeats_received=num_suspect_events=0; suspect_history.clear(); }
public String getMergeIdHistory() {return merge_id_history.toString();} public boolean isMergeTaskRunning() {return merge_task.isRunning();}
discovered_hosts.addIfAbsent(addressToBeAdded); log.debug("Performing discovery of the following hosts %s", discovered_hosts.toString());
@Override public Object down(Event evt) { Object retval = super.down(evt); switch (evt.getType()) { case Event.VIEW_CHANGE: for (Address logical_addr : view.getMembersRaw()) { PhysicalAddress physical_addr = (PhysicalAddress) down_prot .down(new Event(Event.GET_PHYSICAL_ADDRESS, logical_addr)); if (physical_addr != null) { discovered_hosts.addIfAbsent(physical_addr); } } break; case Event.SUSPECT: Collection<Address> addresses = evt.getArg() instanceof Address ? Collections.singletonList(evt.arg()) : evt.arg(); discovered_hosts.removeAll(addresses); break; case Event.ADD_PHYSICAL_ADDRESS: Tuple<Address, PhysicalAddress> tuple = evt.getArg(); PhysicalAddress physical_addr = tuple.getVal2(); if (physical_addr != null) discovered_hosts.addIfAbsent(physical_addr); break; } return retval; }
public void resetStats() { num_heartbeats=num_suspect_events=0; suspect_history.removeAll(); }
log.trace(new StringBuffer().append(local_addr).append(" <-- DATA(").append(sender).append(": #").append(seqno)); if(previous_members.contains(sender)) { previous_members.removeElement(sender);
/** * Adds an object to the head, removes an element from the tail if capacity has been exceeded * @param obj The object to be added */ public void addAtHead(Object obj) { if(obj == null) return; while(size >= max_capacity && size > 0) { remove(); } super.addAtHead(obj); } }
protected Object handleDownEvent(Event evt) { Object ret=super.handleDownEvent(evt); if(evt.getType() == Event.VIEW_CHANGE) { suspected_mbrs.removeAll(); View v=(View)evt.getArg(); Vector tmp_mbrs=v != null? v.getMembers() : null; if(tmp_mbrs != null) { retainAll(tmp_mbrs); // remove all connections from the ConnectionTable which are not members } } else if(evt.getType() == Event.UNSUSPECT) { suspected_mbrs.removeElement(evt.getArg()); } return ret; } }
public T removeFromHead() { return poll(); }
protected void suspect(Set<Address> suspects) { if(suspects == null) return; suspects.remove(local_addr); suspects.forEach(suspect -> suspect_history.add(String.format("%s: %s", new Date(), suspect))); suspected_mbrs.addAll(suspects); List<Address> eligible_mbrs=new ArrayList<>(this.members); eligible_mbrs.removeAll(suspected_mbrs); // Check if we're coord, then send up the stack if(local_addr != null && !eligible_mbrs.isEmpty() && local_addr.equals(eligible_mbrs.get(0))) { log.debug("%s: suspecting %s", local_addr, suspected_mbrs); up_prot.up(new Event(Event.SUSPECT, suspected_mbrs)); down_prot.down(new Event(Event.SUSPECT, suspected_mbrs)); } }
/** * Flushes the queue. Done in a separate thread as we don't want to block the * {@link ClientGmsImpl#installView(org.jgroups.View,org.jgroups.util.Digest)} method (called when a view is installed). */ protected void flushBecomeServerQueue() { if(become_server_queue != null && !become_server_queue.isEmpty()) { log.trace("%s: flushing become_server_queue (%d elements)", local_addr, become_server_queue.size()); TP transport=getTransport(); for(final Message msg: become_server_queue) { transport.submitToThreadPool(() -> { try { up(msg); } finally { become_server_queue.remove(msg); } }, true); } } }
public void resetStats() { num_heartbeats=num_suspect_events=0; suspect_history.clear(); }