concurrency 2

This commit is contained in:
Bill Burke committed 2016-02-09 21:10:30 -05:00
1 parent 1c97b9c41d
commit 45e5cfac99
22 files changed
+1283 -107

No files matched your search

@@ -30,6 +30,7 @@ public class DefaultKeycloakTransactionManager implements KeycloakTransactionMan
public static final ServicesLogger logger = ServicesLogger.ROOT_LOGGER;
private List<KeycloakTransaction> prepare = new LinkedList<KeycloakTransaction>();
private List<KeycloakTransaction> transactions = new LinkedList<KeycloakTransaction>();
private List<KeycloakTransaction> afterCompletion = new LinkedList<KeycloakTransaction>();
private boolean active;
@@ -53,6 +54,15 @@ public class DefaultKeycloakTransactionManager implements KeycloakTransactionMan
afterCompletion.add(transaction);
}
@Override
public void enlistPrepare(KeycloakTransaction transaction) {
if (active && !transaction.isActive()) {
transaction.begin();
}
prepare.add(transaction);
}
@Override
public void begin() {
if (active) {
@@ -69,6 +79,17 @@ public class DefaultKeycloakTransactionManager implements KeycloakTransactionMan
@Override
public void commit() {
RuntimeException exception = null;
for (KeycloakTransaction tx : prepare) {
try {
tx.commit();
} catch (RuntimeException e) {
exception = exception == null ? e : exception;
}
}
if (exception != null) {
rollback(exception);
return;
}
for (KeycloakTransaction tx : transactions) {
try {
tx.commit();
@@ -105,6 +126,10 @@ public class DefaultKeycloakTransactionManager implements KeycloakTransactionMan
@Override
public void rollback() {
RuntimeException exception = null;
rollback(exception);
}
protected void rollback(RuntimeException exception) {
for (KeycloakTransaction tx : transactions) {
try {
tx.rollback();