/** Adds a lkist of responses * @param responses Collection<Rsp> */ public RspList(Collection responses) { if(responses != null) { for(Iterator it=responses.iterator(); it.hasNext();) { Rsp rsp=(Rsp)it.next(); rsps.put(rsp.getSender(), rsp); } } }
public Vector getSuspectedMembers() { Vector retval=new Vector(); Rsp rsp; for(Iterator it=values().iterator(); it.hasNext();) { rsp=(Rsp)it.next(); if(rsp.wasSuspected()) retval.addElement(rsp.getSender()); } return retval; }
private <T> T futureDone(RspList<T> rspList) { Collection<Rsp<T>> values = rspList.values(); values.parallelStream() .filter(Rsp::hasException) .forEach(rsp -> logWarn(() -> String.format("Execute method failed. Sender [%s], with exception [%s]", rsp.getSender(), rsp.getException()))); T value = values.stream() .filter(Rsp::wasReceived) .filter(((Predicate<Rsp<T>>) Rsp::hasException).negate()) .filter(((Predicate<Rsp<T>>) Rsp::wasUnreachable).negate()) .map(Rsp::getValue) .filter((t) -> t != null) .reduce((a, b) -> a) .orElse(null); if (value instanceof DataHolder) { return ((DataHolder<T>) value).unwrap(); } else { return value; } }
log.debug("Response from node " + response.getSender() + " was not received."); throw new ChannelException("Node " + response.getSender() + " failed to respond."); log.debug("Node " + response.getSender() + " was suspected."); throw new ChannelException("Node " + response.getSender() + " is faulty."); throw new ChannelException("Node " + response.getSender() + " generated fault (class " + faultClass + ')');
if(log.isDebugEnabled()) log.debug("Response from node " + response.getSender() + " was not received."); if(log.isDebugEnabled()) log.debug("Node " + response.getSender() + " was suspected."); throw new ChannelException("Node " + response.getSender() + " is faulty."); throw new ChannelException("Node " + response.getSender() + " generated fault (class " + faultClass + ')');
private <T> List<T> processResponseList(RspList<T> rspList, String serviceName, String methodName, Object[] args, boolean trace) { List<T> result = new ArrayList<T>(rspList.size()); if (rspList != null) { for (Rsp<T> response : rspList.values()) { // Only include successful received responses if (response.hasException()) { Throwable e = response.getException(); ClusteringImplLogger.ROOT_LOGGER.debugf(e, "%s invocation failure from %s: %s(%s)", serviceName, response.getSender(), methodName, (args != null) ? Arrays.asList(args) : ""); } else if (response.wasReceived()) { result.add(response.getValue()); } else if (trace) { ClusteringImplLogger.ROOT_LOGGER.tracef("Ignoring non-received response: %s", response); } } } return result; }