mirror of
https://github.com/keycloak/keycloak.git
synced 2026-01-10 15:32:05 -03:30
fix: allow multiple non-xa datasources to work (#35878)
closes: #34880 Signed-off-by: Steve Hawkins <shawkins@redhat.com>
This commit is contained in:
parent
2bb98d9684
commit
5584a5518e
@ -44,6 +44,8 @@ import io.quarkus.hibernate.orm.deployment.HibernateOrmConfig;
|
||||
import io.quarkus.hibernate.orm.deployment.PersistenceXmlDescriptorBuildItem;
|
||||
import io.quarkus.hibernate.orm.deployment.integration.HibernateOrmIntegrationRuntimeConfiguredBuildItem;
|
||||
import io.quarkus.hibernate.orm.deployment.spi.AdditionalJpaModelBuildItem;
|
||||
import io.quarkus.narayana.jta.runtime.TransactionManagerBuildTimeConfig;
|
||||
import io.quarkus.narayana.jta.runtime.TransactionManagerBuildTimeConfig.UnsafeMultipleLastResourcesMode;
|
||||
import io.quarkus.resteasy.reactive.server.spi.MethodScannerBuildItem;
|
||||
import io.quarkus.runtime.configuration.ConfigurationException;
|
||||
import io.quarkus.vertx.http.deployment.HttpRootPathBuildItem;
|
||||
@ -302,7 +304,11 @@ class KeycloakProcessor {
|
||||
// Inspired by AgroalProcessor
|
||||
@BuildStep
|
||||
@Produce(CheckMultipleDatasourcesBuildStep.class)
|
||||
void checkMultipleDatasourcesUseXA(DataSourcesBuildTimeConfig dataSourcesConfig, DataSourcesJdbcBuildTimeConfig jdbcConfig) {
|
||||
void checkMultipleDatasourcesUseXA(TransactionManagerBuildTimeConfig transactionManagerConfig, DataSourcesBuildTimeConfig dataSourcesConfig, DataSourcesJdbcBuildTimeConfig jdbcConfig) {
|
||||
if (transactionManagerConfig.unsafeMultipleLastResources
|
||||
.orElse(UnsafeMultipleLastResourcesMode.DEFAULT) != UnsafeMultipleLastResourcesMode.FAIL) {
|
||||
return;
|
||||
}
|
||||
long nonXADatasourcesCount = dataSourcesConfig.dataSources().keySet().stream()
|
||||
.map(ds -> jdbcConfig.dataSources().get(ds).jdbc())
|
||||
.filter(jdbc -> jdbc.enabled() && jdbc.transactions() != TransactionIntegration.XA)
|
||||
|
||||
@ -28,6 +28,7 @@ import org.keycloak.it.junit5.extension.BeforeStartDistribution;
|
||||
import org.keycloak.it.junit5.extension.CLIResult;
|
||||
import org.keycloak.it.junit5.extension.DistributionTest;
|
||||
import org.keycloak.it.junit5.extension.RawDistOnly;
|
||||
import org.keycloak.it.junit5.extension.WithEnvVars;
|
||||
import org.keycloak.it.utils.KeycloakDistribution;
|
||||
|
||||
import io.quarkus.test.junit.main.Launch;
|
||||
@ -114,6 +115,15 @@ public class QuarkusPropertiesAutoBuildDistTest {
|
||||
cliResult.assertError("Multiple datasources are configured but more than 1 is using non-XA transactions.");
|
||||
}
|
||||
|
||||
@Test
|
||||
@BeforeStartDistribution(AddNonXADatasource.class)
|
||||
@WithEnvVars({"QUARKUS_TRANSACTION_MANAGER_UNSAFE_MULTIPLE_LAST_RESOURCES", "ALLOW"})
|
||||
@Launch({ "start" })
|
||||
@Order(10)
|
||||
void nonXADatasourceStart(CLIResult cliResult) {
|
||||
cliResult.assertStarted();
|
||||
}
|
||||
|
||||
public static class EnableAdditionalConsoleHandler implements Consumer<KeycloakDistribution> {
|
||||
@Override
|
||||
public void accept(KeycloakDistribution distribution) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user