log.trace("callRemoteMethods(): valid members are " + validMembers + " methods: " + methodCall + " Using OOB? " + useOutOfBandMessage);
if (channel.flushSupported())
{
if (!flushBlockGate.await(configuration.getStateRetrievalTimeout()))
throw new TimeoutException("State retrieval timed out waiting for flush unblock.");
}
// useOutOfBandMessage = false;
rsps = responseFilter == null
? disp.callRemoteMethods(validMembers, methodCall, modeToUse, timeout, isUsingBuddyReplication, useOutOfBandMessage)
: disp.callRemoteMethods(validMembers, methodCall, modeToUse, timeout, isUsingBuddyReplication, useOutOfBandMessage, responseFilter);
// a null response is 99% likely to be due to a marshalling problem - we throw a NSE, this needs to be changed when
// JGroups supports http://jira.jboss.com/jira/browse/JGRP-193
if (rsps == null)
{
// return null;
throw new NotSerializableException("RpcDispatcher returned a null. This is most often caused by args for " + methodCall.getName() + " not being serializable.");
}
if (mode == GroupRequest.GET_NONE) return Collections.emptyList();// async case
if (trace) log.trace("(" + getLocalAddress() + "): responses for method " + methodCall.getName() + ":\n" + rsps);
retval = new ArrayList<Object>(rsps.size());
for (Rsp rsp : rsps.values())
{
if (rsp.wasSuspected() || !rsp.wasReceived())
{
CacheException ex;
if (rsp.wasSuspected())
{
ex = new SuspectException("Suspected member: " + rsp.getSender());
}
else
{
ex = new TimeoutException("Replication timeout for " + rsp.getSender());
}
retval.add(new ReplicationException("rsp=" + rsp, ex));
}
else
{