Skip to content

DataSourceBuilder cannot derive a DataSource from a lazy connection proxy#50271

Open
vpavic wants to merge 2 commits intospring-projects:mainfrom
vpavic:improve-datasourcebuilder
Open

DataSourceBuilder cannot derive a DataSource from a lazy connection proxy#50271
vpavic wants to merge 2 commits intospring-projects:mainfrom
vpavic:improve-datasourcebuilder

Conversation

@vpavic
Copy link
Copy Markdown
Contributor

@vpavic vpavic commented May 1, 2026

While attempting to use newly introduced spring.datasource.connection-fetch=lazy in a project that uses separate JDBC credentials for running Liquibase migrations I came across the issue with the following root cause:

 Caused by: org.springframework.boot.jdbc.UnsupportedDataSourcePropertyException: Unable to find suitable method for url
 	at org.springframework.boot.jdbc.UnsupportedDataSourcePropertyException.throwIf(UnsupportedDataSourcePropertyException.java:36)
 	at org.springframework.boot.jdbc.DataSourceBuilder$ReflectionDataSourceProperties.getMethod(DataSourceBuilder.java:605)
 	at org.springframework.boot.jdbc.DataSourceBuilder$ReflectionDataSourceProperties.get(DataSourceBuilder.java:595)
 	at org.springframework.boot.jdbc.DataSourceBuilder.build(DataSourceBuilder.java:186)
 	at org.springframework.boot.liquibase.autoconfigure.LiquibaseAutoConfiguration$LiquibaseConfiguration.getMigrationDataSource(LiquibaseAutoConfiguration.java:173)
 	at org.springframework.boot.liquibase.autoconfigure.LiquibaseAutoConfiguration$LiquibaseConfiguration.createSpringLiquibase(LiquibaseAutoConfiguration.java:148)
 	at org.springframework.boot.liquibase.autoconfigure.LiquibaseAutoConfiguration$LiquibaseConfiguration.liquibase(LiquibaseAutoConfiguration.java:105)
 	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
 	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
 	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:155)
 	... 124 more

The exact scenario that led to this can be reproduced using LiquibaseAutoConfigurationTests#lazyConnectionDataSource test from the first commit in this PR.

At quick glance it seems the same issue can happen with Flyway and Spring Boot's database initialization and looks like a limitation of DataSourceBuilder and its support for deriving a builder from existing data sources which second commit in this PR attempts to address.

@spring-projects-issues spring-projects-issues added the status: waiting-for-triage An issue we've not yet triaged label May 1, 2026
vpavic added 2 commits May 1, 2026 11:05
Signed-off-by: Vedran Pavic <vedran@vedranpavic.com>
…roxy

Signed-off-by: Vedran Pavic <vedran@vedranpavic.com>
@vpavic vpavic force-pushed the improve-datasourcebuilder branch from a51a8b0 to be21430 Compare May 1, 2026 09:09
@wilkinsona wilkinsona changed the title Add support for deriving a DataSourceBuilder from a lazy connection proxy DataSourceBuilder cannot derive a DataSource from a lazy connection proxy May 1, 2026
@wilkinsona wilkinsona added type: bug A general bug and removed status: waiting-for-triage An issue we've not yet triaged labels May 1, 2026
@wilkinsona wilkinsona added this to the 4.1.x milestone May 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: bug A general bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants