in geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java [480:508]
public void rollback() throws IllegalStateException, SystemException {
List rms;
synchronized (this) {
switch (status) {
case Status.STATUS_ACTIVE:
status = Status.STATUS_MARKED_ROLLBACK;
break;
case Status.STATUS_MARKED_ROLLBACK:
break;
default:
throw new IllegalStateException("Status is " + getStateString(status));
}
rms = resourceManagers;
}
endResources();
try {
try {
rollbackResources(rms, false);
} catch (HeuristicMixedException e) {
throw (SystemException)new SystemException("Unable to roll back due to heuristics").initCause(e);
}
} finally {
afterCompletion();
synchronized (this) {
status = Status.STATUS_NO_TRANSACTION;
}
}
}