LOG.trace("(" + channel.getLocalAddress() + "): responses for command " + commandId + ":\n" + rsps);
}
List<Object> retval = new ArrayList<Object>(rsps.size());
for (Address dest : dests)
{
Rsp rsp = rsps.get(dest);
if (rsp == null || (rsp.wasSuspected() && !rsp.wasReceived()))
{
// The corresponding member has left
retval.add(new MemberHasLeftException("No response for the member " + dest
+ ", this member has probably left the cluster."));
}
else if (!rsp.wasReceived())
{
retval.add(new RPCException("Replication timeout for " + rsp.getSender() + ", rsp=" + rsp));
}
else
{
Object value = rsp.getValue();
if (value instanceof RPCException)
{
// if we have any application-level exceptions make sure we throw them!!
if (LOG.isTraceEnabled())
LOG.trace("Recieved exception'" + value + "' from " + rsp.getSender(), (RPCException)value);
}
retval.add(value);
}
}
return retval;