Comment From: snicoll

Unfortunately the upgrade breaks on native:

Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': null
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1802)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:296)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:970)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:443)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:319)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354)
    at org.springframework.samples.petclinic.PetClinicApplication.main(PetClinicApplication.java:38)
Caused by: java.lang.ExceptionInInitializerError
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:158)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:82)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:130)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:238)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:215)
    at org.hibernate.boot.model.relational.Database.<init>(Database.java:45)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:226)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:194)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:171)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1431)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1502)
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:66)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:419)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:400)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1849)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1798)
    ... 15 more
Caused by: java.lang.IllegalArgumentException: Invalid logger interface org.hibernate.internal.log.ConnectionInfoLogger (implementation not found)
    at org.jboss.logging.Logger.doGetMessageLogger(Logger.java:2627)
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2582)
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2549)
    at org.hibernate.internal.log.ConnectionInfoLogger.<clinit>(ConnectionInfoLogger.java:38)
    ... 34 more

Comment From: wilkinsona

In think we should proceed with the upgrade. The native problem can be worked around with some additional reachability metadata and getting feedback on the upgrade in general outweighs that inconvenience, IMO.

Comment From: sdeleuze

Be aware there are 2 issues.

The first one reported by Stéphane can be fixed via a updated generation of reachability metadata with Hibernate 6.6.0.Final with the related script crafted by @christophstrobl. Not a big deal, I will shortly created a related PR.

The second one is more serious, it seems to break org.hibernate.bytecode.internal.bytebuddy.BytecodeProviderImpl exclusion and crashes Petclinic at startup, I am not sure yet why this happens with Hibernate 6.6 and not 6.5. I will provide an update when I find.

Comment From: wilkinsona

Thanks, @sdeleuze. I'd still prefer to upgrade now, even if it's broken for native users. We can mention that in the release notes and I'd rather get more feedback on the upgrade during the 3.4 milestone phase from those not using native.

Comment From: sdeleuze

We are going to have a deeper look with the GraalVM team and @mhalbritter to try to understand what happens using this repro.

The metadata PR fixing the issue reported by @snicoll is https://github.com/oracle/graalvm-reachability-metadata/pull/523.

Comment From: mhalbritter

Christian Wimmer found the issue - @sdeleuze will update the PR and then it should work again on native.

Comment From: sdeleuze

Done, I have asked @christophstrobl review.

Comment From: sdeleuze

GraalVM metadata 0.3.9 has been released with Hibernate 6.6.0.Final support. There is not yet a new Native Build Tools version using it by default, but maybe @mhalbritter @wilkinsona @snicoll you can mention it can be used for native support with Hibernate in Spring Boot 3.4.0-M2 release notes.

I have asked to the GraalVM team to release a new version of NBT at least one week before 3.4.0-M3 release.

Comment From: quaff

Can we backport it to 3.3.x? since 6.5 is not supported now, see https://hibernate.org/orm/releases/