keycloak-aplcache
Changes
connections/mongo/src/main/java/org/keycloak/connections/mongo/MongoKeycloakTransaction.java 2(+2 -0)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheRealmProvider.java 2(+2 -0)
Details
diff --git a/connections/mongo/src/main/java/org/keycloak/connections/mongo/MongoKeycloakTransaction.java b/connections/mongo/src/main/java/org/keycloak/connections/mongo/MongoKeycloakTransaction.java
index 705b888..a8dffc7 100644
--- a/connections/mongo/src/main/java/org/keycloak/connections/mongo/MongoKeycloakTransaction.java
+++ b/connections/mongo/src/main/java/org/keycloak/connections/mongo/MongoKeycloakTransaction.java
@@ -42,11 +42,13 @@ public class MongoKeycloakTransaction implements KeycloakTransaction {
} catch (MongoException e) {
throw MongoStoreImpl.convertException(e);
}
+ started = false;
}
@Override
public void rollback() {
invocationContext.rollback();
+ started = false;
}
@Override
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheRealmProvider.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheRealmProvider.java
index 607a10c..a1d232e 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheRealmProvider.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheRealmProvider.java
@@ -122,12 +122,14 @@ public class DefaultCacheRealmProvider implements CacheRealmProvider {
cache.clear();
}
runInvalidations();
+ transactionActive = false;
}
@Override
public void rollback() {
setRollbackOnly = true;
runInvalidations();
+ transactionActive = false;
}
@Override
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheUserProvider.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheUserProvider.java
index 781a3de..678bf70 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheUserProvider.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheUserProvider.java
@@ -87,12 +87,14 @@ public class DefaultCacheUserProvider implements CacheUserProvider {
cache.clear();
}
runInvalidations();
+ transactionActive = false;
}
@Override
public void rollback() {
setRollbackOnly = true;
runInvalidations();
+ transactionActive = false;
}
@Override
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/model/TransactionsTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/model/TransactionsTest.java
new file mode 100644
index 0000000..c2c5da4
--- /dev/null
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/model/TransactionsTest.java
@@ -0,0 +1,32 @@
+package org.keycloak.testsuite.model;
+
+import org.junit.Assert;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.keycloak.models.KeycloakSession;
+import org.keycloak.testsuite.rule.KeycloakRule;
+
+/**
+ * @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
+ */
+public class TransactionsTest {
+
+ @ClassRule
+ public static KeycloakRule kc = new KeycloakRule();
+
+ @Test
+ public void testTransactionActive() {
+ KeycloakSession session = kc.startSession();
+
+ Assert.assertTrue(session.getTransaction().isActive());
+ session.getTransaction().commit();
+ Assert.assertFalse(session.getTransaction().isActive());
+
+ session.getTransaction().begin();
+ Assert.assertTrue(session.getTransaction().isActive());
+ session.getTransaction().rollback();
+ Assert.assertFalse(session.getTransaction().isActive());
+
+ session.close();
+ }
+}