/*
* Differentiate between us ending the transaction and some other
* thread doing it.
*/
throw new INVALID_TRANSACTION(0, CompletionStatus.COMPLETED_NO); // means
// transaction
// already
// terminated.
}
switch (status)
{
case ActionStatus.ABORTING:
case ActionStatus.ABORTED:
case ActionStatus.H_ROLLBACK:
/*
* If the transaction has already rolledback then silently ignore
* the multiple rollback attempts.
*/
return;
case ActionStatus.PREPARING: // shouldn't be able to get heuristics or
// any of these!
case ActionStatus.PREPARED:
case ActionStatus.COMMITTING:
case ActionStatus.COMMITTED:
case ActionStatus.H_COMMIT:
case ActionStatus.H_MIXED:
case ActionStatus.H_HAZARD:
throw new INVALID_TRANSACTION(0, CompletionStatus.COMPLETED_NO); // means
// transaction
// already
// terminated.
case ActionStatus.INVALID:
case ActionStatus.CLEANUP: