mirror of
https://github.com/keycloak/keycloak.git
synced 2026-02-20 22:29:06 -06:00
Avoid additional execution of Liquibase changelog lock table statement
Closes #41295 Signed-off-by: Martin Bartoš <mabartos@redhat.com>
This commit is contained in:
@@ -128,7 +128,10 @@ public class CustomLockService extends StandardLockService {
|
||||
|
||||
try {
|
||||
Set<Integer> currentIds = currentIdsInDatabaseChangeLogLockTable();
|
||||
if (!currentIds.containsAll(Arrays.asList(DBLockProvider.Namespace.values()))) {
|
||||
Set<Integer> customNamespaceIds = Arrays.stream(DBLockProvider.Namespace.values())
|
||||
.map(DBLockProvider.Namespace::getId)
|
||||
.collect(Collectors.toSet());
|
||||
if (!currentIds.containsAll(customNamespaceIds)) {
|
||||
if (log.isTraceEnabled()) {
|
||||
log.tracef("Initialize Database Lock Table, current locks %s", currentIds);
|
||||
}
|
||||
|
||||
25
quarkus/tests/integration/src/test/java/org/keycloak/it/cli/dist/LiquibaseDistTest.java
vendored
Normal file
25
quarkus/tests/integration/src/test/java/org/keycloak/it/cli/dist/LiquibaseDistTest.java
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
package org.keycloak.it.cli.dist;
|
||||
|
||||
import org.junit.jupiter.api.Tag;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.keycloak.it.junit5.extension.DistributionTest;
|
||||
import org.keycloak.it.junit5.extension.RawDistOnly;
|
||||
import org.keycloak.it.utils.KeycloakDistribution;
|
||||
|
||||
@DistributionTest
|
||||
@RawDistOnly(reason = "Containers are immutable")
|
||||
@Tag(DistributionTest.SLOW)
|
||||
public class LiquibaseDistTest {
|
||||
|
||||
@Test
|
||||
public void dbLockMultipleExecution(KeycloakDistribution distribution) {
|
||||
var result = distribution.run("start-dev", "--log-level=org.keycloak.connections.jpa.updater.liquibase.lock.CustomLockService:trace");
|
||||
result.assertMessage("Initialize Database Lock Table, current locks []");
|
||||
result.assertMessage("Initialized record in the database lock table");
|
||||
|
||||
// the code block in the CustomLockService should not be executed for the second time
|
||||
result = distribution.run("start-dev", "--log-level=org.keycloak.connections.jpa.updater.liquibase.lock.CustomLockService:trace");
|
||||
result.assertNoMessage("Initialize Database Lock Table, current locks");
|
||||
result.assertNoMessage("Initialized record in the database lock table");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user