Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Named datasource not found on DevServices #21387

Closed
amlbarbosa opened this issue Nov 11, 2021 · 1 comment · Fixed by #21846
Closed

Named datasource not found on DevServices #21387

amlbarbosa opened this issue Nov 11, 2021 · 1 comment · Fixed by #21846
Assignees
Labels
area/devservices kind/bug Something isn't working
Milestone

Comments

@amlbarbosa
Copy link

amlbarbosa commented Nov 11, 2021

Describe the bug

While using Dev Services and hibernate, a named datasource that includes a jdbc configuration (e.g. quarkus.datasource."datasource-name".jdbc.min-size) while cause the following error when starting Quarkus.

Caused by: java.lang.RuntimeException: io.quarkus.runtime.configuration.ConfigurationException: Model classes are defined for the default persistence unit nameds but configured datasource nameds not found: the default EntityManagerFactory will not be created. To solve this, configure the default datasource. Refer to https://quarkus.io/guides/datasource for guidance.

Removing the configuration or declaring it with the %prod profile, does not cause the problem.
Also, this does not seem to happen with the default datasource.

Expected behavior

Configurations such as quarkus.datasource."datasource-name".jdbc.min-size did not cause the mentioned issue.

Actual behavior

java.lang.RuntimeException: java.lang.RuntimeException: Failed to start quarkus
	at io.quarkus.dev.appstate.ApplicationStateNotification.waitForApplicationStart(ApplicationStateNotification.java:51)
	at io.quarkus.runner.bootstrap.StartupActionImpl.runMainClass(StartupActionImpl.java:122)
	at io.quarkus.deployment.dev.IsolatedDevModeMain.restartApp(IsolatedDevModeMain.java:227)
	at io.quarkus.deployment.dev.IsolatedDevModeMain.restartCallback(IsolatedDevModeMain.java:208)
	at io.quarkus.deployment.dev.RuntimeUpdatesProcessor.doScan(RuntimeUpdatesProcessor.java:516)
	at io.quarkus.deployment.dev.RuntimeUpdatesProcessor.doScan(RuntimeUpdatesProcessor.java:417)
	at io.quarkus.vertx.http.runtime.devmode.VertxHttpHotReplacementSetup$4.handle(VertxHttpHotReplacementSetup.java:152)
	at io.quarkus.vertx.http.runtime.devmode.VertxHttpHotReplacementSetup$4.handle(VertxHttpHotReplacementSetup.java:139)
	at io.vertx.core.impl.ContextImpl.lambda$null$0(ContextImpl.java:159)
	at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:100)
	at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$1(ContextImpl.java:157)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.RuntimeException: Failed to start quarkus
	at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:955)
	at io.quarkus.runtime.Application.start(Application.java:101)
	at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:104)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:67)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:41)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:120)
	at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:29)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at io.quarkus.runner.bootstrap.StartupActionImpl$1.run(StartupActionImpl.java:103)
	... 1 more
Caused by: java.lang.RuntimeException: io.quarkus.runtime.configuration.ConfigurationException: Model classes are defined for the default persistence unit nameds but configured datasource nameds not found: the default EntityManagerFactory will not be created. To solve this, configure the default datasource. Refer to https://quarkus.io/guides/datasource for guidance.
	at io.quarkus.hibernate.orm.runtime.JPAConfig.startAll(JPAConfig.java:72)
	at io.quarkus.hibernate.orm.runtime.JPAConfig_Subclass.startAll$$superforward1(JPAConfig_Subclass.zig:258)
	at io.quarkus.hibernate.orm.runtime.JPAConfig_Subclass$$function$$5.apply(JPAConfig_Subclass$$function$$5.zig:24)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:51)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(InvocationInterceptor_Bean.zig:516)
	at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
	at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32)
	at io.quarkus.hibernate.orm.runtime.JPAConfig_Subclass.startAll(JPAConfig_Subclass.zig:673)
	at io.quarkus.hibernate.orm.runtime.HibernateOrmRecorder.startAllPersistenceUnits(HibernateOrmRecorder.java:96)
	at io.quarkus.deployment.steps.HibernateOrmProcessor$startPersistenceUnits1868654632.deploy_0(HibernateOrmProcessor$startPersistenceUnits1868654632.zig:74)
	at io.quarkus.deployment.steps.HibernateOrmProcessor$startPersistenceUnits1868654632.deploy(HibernateOrmProcessor$startPersistenceUnits1868654632.zig:40)
	at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:829)
	... 12 more
Caused by: io.quarkus.runtime.configuration.ConfigurationException: Model classes are defined for the default persistence unit nameds but configured datasource nameds not found: the default EntityManagerFactory will not be created. To solve this, configure the default datasource. Refer to https://quarkus.io/guides/datasource for guidance.
	at io.quarkus.hibernate.orm.runtime.FastBootHibernatePersistenceProvider.injectDataSource(FastBootHibernatePersistenceProvider.java:317)
	at io.quarkus.hibernate.orm.runtime.FastBootHibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(FastBootHibernatePersistenceProvider.java:178)
	at io.quarkus.hibernate.orm.runtime.FastBootHibernatePersistenceProvider.createEntityManagerFactory(FastBootHibernatePersistenceProvider.java:61)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:80)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
	at io.quarkus.hibernate.orm.runtime.JPAConfig$LazyPersistenceUnit.get(JPAConfig.java:149)
	at io.quarkus.hibernate.orm.runtime.JPAConfig$1.run(JPAConfig.java:58)
	... 1 more

How to Reproduce?

Configuring Quarkus project using a named datasource with the following example configuration, and running it in dev-mode.

# default datasource works fine
quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.max-size=1
quarkus.hibernate-orm.dialect=org.hibernate.dialect.PostgreSQLDialect
quarkus.hibernate-orm.packages=com.example.domain.a

# named datasource, 'quarkus.datasource.nameds.jdbc.min-size' configuration causes the problem
quarkus.datasource.nameds.db-kind=mysql
quarkus.datasource.nameds.jdbc.min-size=1
quarkus.hibernate-orm.nameds.datasource=nameds
quarkus.hibernate-orm.nameds.dialect=org.hibernate.dialect.MySQL57Dialect
quarkus.hibernate-orm.nameds.packages=com.example.domain.b

Output of uname -a or ver

No response

Output of java -version

11

GraalVM version (if different from Java)

No response

Quarkus version or git rev

2.4.1.Final

Build tool (ie. output of mvnw --version or gradlew --version)

No response

Additional information

No response

@amlbarbosa amlbarbosa added the kind/bug Something isn't working label Nov 11, 2021
@quarkus-bot
Copy link

quarkus-bot bot commented Nov 11, 2021

/cc @stuartwdouglas

@geoand geoand self-assigned this Dec 1, 2021
geoand added a commit to geoand/quarkus that referenced this issue Dec 1, 2021
Because of how the Quarkus Runtime Config objects are populated
for map fields (like the named datasources), it so happened
that when a user configured a jdbc property for a named datasource,
the DevServices provided URL for that datasource was not ending
up in DataSourceJdbcRuntimeConfig.

Fixes: quarkusio#21387
geoand added a commit to geoand/quarkus that referenced this issue Dec 1, 2021
Because of how the Quarkus Runtime Config objects are populated
for map fields (like the named datasources), it so happened
that when a user configured a jdbc property for a named datasource,
the DevServices provided URL for that datasource was not ending
up in DataSourceJdbcRuntimeConfig.

Fixes: quarkusio#21387
geoand added a commit to geoand/quarkus that referenced this issue Dec 1, 2021
Because of how the Quarkus Runtime Config objects are populated
for map fields (like the named datasources), it so happened
that when a user configured a jdbc property for a named datasource,
the DevServices provided URL for that datasource was not ending
up in DataSourceJdbcRuntimeConfig.

Fixes: quarkusio#21387
stuartwdouglas added a commit that referenced this issue Dec 1, 2021
Fix named datasource handling for dev-services
@quarkus-bot quarkus-bot bot added this to the 2.6 - main milestone Dec 1, 2021
@gsmet gsmet modified the milestones: 2.6.0.CR1, 2.5.2.Final Dec 9, 2021
gsmet pushed a commit to gsmet/quarkus that referenced this issue Dec 9, 2021
Because of how the Quarkus Runtime Config objects are populated
for map fields (like the named datasources), it so happened
that when a user configured a jdbc property for a named datasource,
the DevServices provided URL for that datasource was not ending
up in DataSourceJdbcRuntimeConfig.

Fixes: quarkusio#21387
(cherry picked from commit 5494549)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/devservices kind/bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants