'java.lang.AssertionError: Nested calls to partialFlushStart' in Hibernate
Issue
- During a query, flush is triggered to ensure the database contains any pending changes that might be relevant to the query.
- During the flush, an application registered
findDirtylistener callback triggers a second query (e.g. due to access of a lazily loaded entity) that also initiates a flush cycle. -
The nested flush attempt fails with an
AssertionError.... WFLYEJB0034: EJB Invocation failed on component SystemConfigurationServiceBean for method ...: javax.ejb.EJBTransactionRolledbackException: WFLYEJB0457: Unexpected Error ... at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:93) at org.hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1277) at org.hibernate.internal.SessionImpl.immediateLoad(SessionImpl.java:1119) at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:178) at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:309) at org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor.intercept(ByteBuddyInterceptor.java:45) ... at org.custom.MyEntity.getString(MyEntity.java:88) at org.custom.MyListener.findDirty(MyListener.java:99) at org.hibernate.event.internal.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:514) at org.hibernate.event.internal.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:239) at org.hibernate.event.internal.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:166) at org.hibernate.event.internal.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:235) at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:94) at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:46) at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1433) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1519) at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1538) at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1506) at org.hibernate.query.Query.getResultList(Query.java:132) ... Caused by: java.lang.AssertionError: Nested calls to partialFlushStart at org.hibernate.engine.internal.StatisticalLoggingSessionEventListener.partialFlushStart(StatisticalLoggingSessionEventListener.java:241) at org.hibernate.engine.internal.SessionEventListenerManagerImpl.partialFlushStart(SessionEventListenerManagerImpl.java:225) at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:39) at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1433) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1519) at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1538) at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1506) at org.hibernate.query.Query.getResultList(Query.java:132) ...
Environment
- Red Hat JBoss Enterprise Application Platform (EAP) 7.3
- Hibernate 5.3
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.