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

Upgrade to Hibernate 6.6.0.Final #41931

Closed
snicoll opened this issue Aug 19, 2024 · 9 comments
Closed

Upgrade to Hibernate 6.6.0.Final #41931

snicoll opened this issue Aug 19, 2024 · 9 comments
Assignees
Labels
type: dependency-upgrade A dependency upgrade
Milestone

Comments

@snicoll
Copy link
Member

snicoll commented Aug 19, 2024

No description provided.

@snicoll snicoll added the type: dependency-upgrade A dependency upgrade label Aug 19, 2024
@snicoll snicoll added this to the 3.4.x milestone Aug 19, 2024
@snicoll snicoll added the status: on-hold We can't start working on this issue yet label Aug 19, 2024
@snicoll
Copy link
Member Author

snicoll commented Aug 19, 2024

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

@wilkinsona
Copy link
Member

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.

@sdeleuze
Copy link
Contributor

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.

@wilkinsona
Copy link
Member

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.

@snicoll snicoll removed the status: on-hold We can't start working on this issue yet label Aug 19, 2024
@snicoll snicoll modified the milestones: 3.4.x, 3.4.0-M2 Aug 19, 2024
@snicoll snicoll self-assigned this Aug 19, 2024
@sdeleuze
Copy link
Contributor

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 oracle/graalvm-reachability-metadata#523.

@mhalbritter
Copy link
Contributor

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

@sdeleuze
Copy link
Contributor

Done, I have asked @christophstrobl review.

@sdeleuze
Copy link
Contributor

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.

@quaff
Copy link
Contributor

quaff commented Sep 3, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: dependency-upgrade A dependency upgrade
Projects
None yet
Development

No branches or pull requests

5 participants