After the update from Spring Boot 3.3.2 to 3.3.3, Liquibase (4.27.0) no longer creates the databasechangeloglock properly.

Tested so far: - Is it the same version of Liquibase between both Spring Boot versions -> same version - Update of liquibase-core to 4.29.1 -> same error - Tested with MariaDB -> strange preparedStatement error - Tested with Postgresql -> databasechangeloglock does not exists - Tested with Liquibase CLI -> works

The strange thing is, that we purely updated the Spring Boot version and it doesn't run any longer. No other change that can be reproduced in multiple services (i.e. not just a problem in a specific application).

Postgresql

14:46:16.819 [main] INFO  liquibase.ui - ERROR: Exception Details
14:46:16.819 [main] INFO  liquibase.ui - ERROR: Exception Primary Class:  PSQLException
14:46:16.819 [main] INFO  liquibase.ui - ERROR: Exception Primary Reason:  ERROR: relation "public.databasechangeloglock" does not exist
  Position: 22
14:46:16.819 [main] INFO  liquibase.ui - ERROR: Exception Primary Source:  PostgreSQL 16.2 (Debian 16.2-1.pgdg120+2)

....
Caused by: org.postgresql.util.PSQLException: ERROR: relation "public.databasechangeloglock" does not exist
  Position: 22
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2725) ~[postgresql-42.7.3.jar:42.7.3]
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2412) ~[postgresql-42.7.3.jar:42.7.3]
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:371) ~[postgresql-42.7.3.jar:42.7.3]
    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:502) ~[postgresql-42.7.3.jar:42.7.3]
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:419) ~[postgresql-42.7.3.jar:42.7.3]
    at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:341) ~[postgresql-42.7.3.jar:42.7.3]
    at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:326) ~[postgresql-42.7.3.jar:42.7.3]
    at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:302) ~[postgresql-42.7.3.jar:42.7.3]
    at org.postgresql.jdbc.PgStatement.executeQuery(PgStatement.java:251) ~[postgresql-42.7.3.jar:42.7.3]
    at jdk.internal.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) ~[?:?]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[?:?]
    at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:130) ~[tomcat-jdbc-10.1.28.jar:?]
    at jdk.proxy2/jdk.proxy2.$Proxy164.executeQuery(Unknown Source) ~[?:?]
    at liquibase.executor.jvm.JdbcExecutor$QueryStatementCallback.doInStatement(JdbcExecutor.java:548) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:80) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:227) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:235) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.executor.jvm.JdbcExecutor.queryForObject(JdbcExecutor.java:243) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.executor.jvm.JdbcExecutor.queryForObject(JdbcExecutor.java:258) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.executor.jvm.JdbcExecutor.queryForInt(JdbcExecutor.java:279) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.executor.jvm.JdbcExecutor.queryForInt(JdbcExecutor.java:274) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.snapshot.SnapshotGeneratorFactory.has(SnapshotGeneratorFactory.java:110) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.snapshot.SnapshotGeneratorFactory.hasDatabaseChangeLogLockTable(SnapshotGeneratorFactory.java:296) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.lockservice.StandardLockService.isDatabaseChangeLogLockTableCreated(StandardLockService.java:242) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.lockservice.StandardLockService.init(StandardLockService.java:117) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.command.core.helpers.DatabaseChangelogCommandStep.checkLiquibaseTables(DatabaseChangelogCommandStep.java:145) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.command.core.helpers.DatabaseChangelogCommandStep.run(DatabaseChangelogCommandStep.java:91) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.command.CommandScope.execute(CommandScope.java:219) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Liquibase.lambda$update$0(Liquibase.java:245) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Scope.lambda$child$0(Scope.java:190) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Scope.child(Scope.java:199) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Scope.child(Scope.java:189) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Scope.child(Scope.java:168) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Liquibase.runInScope(Liquibase.java:1436) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Liquibase.update(Liquibase.java:234) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Liquibase.update(Liquibase.java:212) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:297) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.integration.spring.SpringLiquibase.lambda$afterPropertiesSet$0(SpringLiquibase.java:249) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Scope.lambda$child$0(Scope.java:190) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Scope.child(Scope.java:199) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Scope.child(Scope.java:189) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Scope.child(Scope.java:168) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.Scope.child(Scope.java:256) ~[liquibase-core-4.27.0.jar:?]
    at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:242) ~[liquibase-core-4.27.0.jar:?]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1802) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:313) ~[spring-beans-6.1.12.jar:6.1.12]
    ... 10 more

MariaDB

Caused by: java.sql.SQLSyntaxErrorException: (conn=110) executeQuery(String sql) cannot be called on preparedStatement
    at org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:289) ~[mariadb-java-client-3.3.3.jar:?]
    at org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:343) ~[mariadb-java-client-3.3.3.jar:?]
    at org.mariadb.jdbc.BasePreparedStatement.executeQuery(BasePreparedStatement.java:217) ~[mariadb-java-client-3.3.3.jar:?]
    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:569) ~[?:?]
    at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:130) ~[tomcat-jdbc-10.1.28.jar:?]
    at jdk.proxy2/jdk.proxy2.$Proxy179.executeQuery(Unknown Source) ~[?:?]
    at liquibase.snapshot.JdbcDatabaseSnapshot$CachingDatabaseMetaData$GetColumnResultSetCache.determineActualDataTypes(JdbcDatabaseSnapshot.java:565) ~[liquibase-core-4.27.0.jar:?]

Is this a general problem or are we dealing with a truly strange case here?

Comment From: mhalbritter

If you'd like us to spend some time investigating, please take the time to provide a complete minimal sample (something that we can unzip or git clone, build, and deploy) that reproduces the problem.

Comment From: Ragin-LundF

I've created a very, very downsized version of our modules, that you can reproduce the issue. https://github.com/Ragin-LundF/Ragin-LundF-springboot-liquibase-issue

Under the devops directory, you can find a docker-compose.yaml file to start the database. When you then just start the application (ApiApplication.kt) it fails with the Liquibase error. If you downgrade Spring Boot to 3.3.2 (root build.gradle), you can see, that it is working.

I removed a lot of our subprojects, so the project looks maybe a bit strange. But as a working example it is enough.

You can find the Liquibase files in the sbliquibase-domain-model.

Comment From: mhalbritter

This doesn't work. When I start it with gradle bootRun or in the IDE, it fails with:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: javax/xml/bind/annotation/XmlElement
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1806) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:954) ~[spring-context-6.1.12.jar:6.1.12]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625) ~[spring-context-6.1.12.jar:6.1.12]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.3.3.jar:3.3.3]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) [spring-boot-3.3.3.jar:3.3.3]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) [spring-boot-3.3.3.jar:3.3.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) [spring-boot-3.3.3.jar:3.3.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) [spring-boot-3.3.3.jar:3.3.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) [spring-boot-3.3.3.jar:3.3.3]
    at io.example.application.ApiApplicationKt.main(ApiApplication.kt:37) [main/:?]
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlElement
    at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector.<init>(JaxbAnnotationIntrospector.java:137) ~[jackson-module-jaxb-annotations-2.16.1.jar:2.16.1]
    at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector.<init>(JaxbAnnotationIntrospector.java:124) ~[jackson-module-jaxb-annotations-2.16.1.jar:2.16.1]
    at com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule.setupModule(JaxbAnnotationModule.java:98) ~[jackson-module-jaxb-annotations-2.16.1.jar:2.16.1]
    at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:906) ~[jackson-databind-2.16.1.jar:2.16.1]
    at com.fasterxml.jackson.databind.ObjectMapper.registerModules(ObjectMapper.java:1108) ~[jackson-databind-2.16.1.jar:2.16.1]
    at com.fasterxml.jackson.databind.ObjectMapper.findAndRegisterModules(ObjectMapper.java:1192) ~[jackson-databind-2.16.1.jar:2.16.1]
    at org.hibernate.type.format.jackson.JacksonJsonFormatMapper.<init>(JacksonJsonFormatMapper.java:26) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.type.format.jackson.JacksonIntegration.<clinit>(JacksonIntegration.java:18) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryOptionsBuilder.lambda$determineJsonFormatMapper$7(SessionFactoryOptionsBuilder.java:833) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:220) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:180) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryOptionsBuilder.determineJsonFormatMapper(SessionFactoryOptionsBuilder.java:829) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryOptionsBuilder.<init>(SessionFactoryOptionsBuilder.java:313) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.<init>(SessionFactoryBuilderImpl.java:50) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.DefaultSessionFactoryBuilderService.createSessionFactoryBuilder(DefaultSessionFactoryBuilderService.java:26) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.MetadataImpl.getSessionFactoryBuilder(MetadataImpl.java:169) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1502) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.1.12.jar:6.1.12]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390) ~[spring-orm-6.1.12.jar:6.1.12]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.1.12.jar:6.1.12]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.12.jar:6.1.12]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1802) ~[spring-beans-6.1.12.jar:6.1.12]
    ... 15 more
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlElement
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?]
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[?:?]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
    at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector.<init>(JaxbAnnotationIntrospector.java:137) ~[jackson-module-jaxb-annotations-2.16.1.jar:2.16.1]
    at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector.<init>(JaxbAnnotationIntrospector.java:124) ~[jackson-module-jaxb-annotations-2.16.1.jar:2.16.1]
    at com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule.setupModule(JaxbAnnotationModule.java:98) ~[jackson-module-jaxb-annotations-2.16.1.jar:2.16.1]
    at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:906) ~[jackson-databind-2.16.1.jar:2.16.1]
    at com.fasterxml.jackson.databind.ObjectMapper.registerModules(ObjectMapper.java:1108) ~[jackson-databind-2.16.1.jar:2.16.1]
    at com.fasterxml.jackson.databind.ObjectMapper.findAndRegisterModules(ObjectMapper.java:1192) ~[jackson-databind-2.16.1.jar:2.16.1]
    at org.hibernate.type.format.jackson.JacksonJsonFormatMapper.<init>(JacksonJsonFormatMapper.java:26) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.type.format.jackson.JacksonIntegration.<clinit>(JacksonIntegration.java:18) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryOptionsBuilder.lambda$determineJsonFormatMapper$7(SessionFactoryOptionsBuilder.java:833) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:220) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:180) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryOptionsBuilder.determineJsonFormatMapper(SessionFactoryOptionsBuilder.java:829) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryOptionsBuilder.<init>(SessionFactoryOptionsBuilder.java:313) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.<init>(SessionFactoryBuilderImpl.java:50) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.DefaultSessionFactoryBuilderService.createSessionFactoryBuilder(DefaultSessionFactoryBuilderService.java:26) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.boot.internal.MetadataImpl.getSessionFactoryBuilder(MetadataImpl.java:169) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1502) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.1.12.jar:6.1.12]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390) ~[spring-orm-6.1.12.jar:6.1.12]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.1.12.jar:6.1.12]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.12.jar:6.1.12]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853) ~[spring-beans-6.1.12.jar:6.1.12]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1802) ~[spring-beans-6.1.12.jar:6.1.12]
    ... 15 more

Please take the time to create a minimal sample which reproduces the problem.

Comment From: Ragin-LundF

Sorry, something went wrong.

I've updated the project and removed some other not required stuff. If you would like to update the project and start it with:

./gradlew sbliquibase-server:bootRun

You will see the issue.

I've tried it also in a very simple standard project and there it worked. So it seems to be a problem with (Gradle) multi-projects.

Comment From: mhalbritter

Can be reproduced with these dependencies:

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-jdbc') {
        exclude group: "com.zaxxer", module: "HikariCP"
    }
    implementation "org.apache.tomcat:tomcat-jdbc"
    implementation 'org.liquibase:liquibase-core'
    runtimeOnly 'com.h2database:h2'
}

Spring Boot 3.3.2 uses tomcat-jdbc 10.1.26, while Spring Boot 3.3.3 uses tomcat-jdbc 10.1.28. Liquibase fails with tomcat-jdbc 10.1.28 but works with 10.1.26.

If I add this to a Boot 3.3.3 app:

implementation "org.apache.tomcat:tomcat-jdbc:10.1.26"

it works.

If i add this to a Boot 3.3.2 app:

implementation "org.apache.tomcat:tomcat-jdbc:10.1.28"

it starts failing.

So the workaround for now is to use tomcat-jdbc 10.1.26 until we have found out was exactly is broken.

reproducer.zip

Comment From: mhalbritter

Boot 3.2.9 is affected, too. It works with 3.2.8.

Comment From: Ragin-LundF

Thank you very much for the answer. The downgrade of tomcat-jdbc works for me too.

Not the best solution to downgrade the "default dependencies", but for now it should be ok, until it is fixed.

Comment From: philwebb

The root cause of this is https://github.com/apache/tomcat/pull/742 and has been fixed in https://github.com/apache/tomcat/pull/745.

If you update the sample with maven { url "https://repository.apache.org/content/repositories/snapshots" } and use implementation "org.apache.tomcat:tomcat-jdbc:10.1.29-SNAPSHOT" then things work.

We'll pick up the Tomcat upgrade in due course.