in geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java [599:620]
private void rollbackResources(List<TransactionBranch> rms, boolean everRb) throws HeuristicMixedException, SystemException {
RollbackTask rollbackTask = new RollbackTask(xid, rms, logMark, txManager);
synchronized (this) {
status = Status.STATUS_ROLLING_BACK;
}
rollbackTask.run();
synchronized (this) {
status = rollbackTask.getStatus();
}
XAException cause = rollbackTask.getCause();
boolean everRolledback = everRb || rollbackTask.isEverRolledBack();
if (cause != null) {
if (cause.errorCode == XAException.XA_HEURCOM && everRolledback) {
throw (HeuristicMixedException) new HeuristicMixedException("HeuristicMixed error during commit/rolling back").initCause(cause);
} else if (cause.errorCode == XAException.XA_HEURMIX) {
throw (HeuristicMixedException) new HeuristicMixedException("HeuristicMixed error during commit/rolling back").initCause(cause);
} else {
throw (SystemException) new SystemException("System Error during commit/rolling back").initCause(cause);
}
}
}