in geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java [515:536]
private void beforeCompletion(List syncs) {
int i = 0;
while (true) {
Synchronization synch;
synchronized (this) {
if (i == syncs.size()) {
return;
} else {
synch = (Synchronization) syncs.get(i++);
}
}
try {
synch.beforeCompletion();
} catch (Exception e) {
log.log(Level.WARNING,"Unexpected exception from beforeCompletion; transaction will roll back", e);
synchronized (this) {
markRollbackCause(e);
status = Status.STATUS_MARKED_ROLLBACK;
}
}
}
}