{
// FIRST pass this call up the chain. Only if it succeeds (no exceptions) locally do we attempt to replicate.
Object returnValue = nextInterceptor(ctx);
if (ctx.getTransaction() == null && ctx.isOriginLocal())
{
MethodCall m = ctx.getMethodCall();
if (trace)
{
log.trace("invoking method " + m + ", members=" + cache.getMembers() + ", mode=" +
configuration.getCacheMode() + ", exclude_self=" + true + ", timeout=" +
configuration.getSyncReplTimeout());
}
if (!isSynchronous(ctx.getOptionOverrides()) || m.getMethodId() == MethodDeclarations.putForExternalReadMethodLocal_id)
{
// 2. Replicate change to all *other* members (exclude self !)
replicateCall(ctx, m, false, ctx.getOptionOverrides());
}
else