concurrency 2
This commit is contained in:
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();
|
||||
|
||||
Reference in new issue
Block a user