@Override
public Object perform(InvocationContext ignored) throws Throwable {
if (ignored != null)
throw new IllegalStateException("Expected null context!");
RemoteTxInvocationContext ctxt = icc.createRemoteTxInvocationContext();
RemoteTransaction transaction = txTable.getRemoteTransaction(globalTx);
if (transaction == null) {
if (unlock) {
if (log.isTraceEnabled()) {
log.trace("Unlock for non-existant transaction " + globalTx + ". Not doing anything.");
}
return null;
}
//create a remote tx without any modifications (we do not know modifications ahead of time)
transaction = txTable.createRemoteTransaction(globalTx);
}
ctxt.setRemoteTransaction(transaction);
return invoker.invoke(ctxt, this);
}