if (request.getRequestType() == TransactionRequest.ONE_PHASE_COMMIT_REQUEST)
{
if (trace) { log.trace(this + " received ONE_PHASE_COMMIT request"); }
Transaction tx = tr.createTransaction();
processTransaction(request.getState(), tx, checkForDuplicates);
tx.commit();
}
else if (request.getRequestType() == TransactionRequest.TWO_PHASE_PREPARE_REQUEST)
{
if (trace) { log.trace(this + " received TWO_PHASE_COMMIT prepare request"); }
Transaction tx = tr.createTransaction(request.getXid());
processTransaction(request.getState(), tx, checkForDuplicates);
tx.prepare();
}
else if (request.getRequestType() == TransactionRequest.TWO_PHASE_COMMIT_REQUEST)
{
if (trace) { log.trace(this + " received TWO_PHASE_COMMIT commit request"); }
Transaction tx = tr.getPreparedTx(request.getXid());
if (trace) { log.trace("Committing " + tx); }
tx.commit();
}
else if (request.getRequestType() == TransactionRequest.TWO_PHASE_ROLLBACK_REQUEST)
{
if (trace) { log.trace(this + " received TWO_PHASE_COMMIT rollback request"); }
// for 2pc rollback - we just don't cancel any messages back to the channel; this is
// driven from the client side.
Transaction tx = tr.getPreparedTx(request.getXid());
if (trace) { log.trace(this + " rolling back " + tx); }
tx.rollback();
}
if (trace) { log.trace(this + " processed transaction successfully"); }
}
catch (Throwable t)