'java.lang.AssertionError: Nested calls to partialFlushStart' in Hibernate

Solution Verified - Updated -

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 findDirty listener 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.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content