Hibernate errors with Singleton RuntimeManager and outer transaction in BPM Suite

Solution Unverified - Updated -

Issue

Hibernate errors with Singleton RuntimeManager and outer transaction in BPM Suite

  • An application embeds jBPM libraries. Sometimes I get the following errors
2018-05-15 13:36:36,410 WARN  [org.jbpm.shared.services.impl.TransactionalCommandService] (default task-87) Could not commit session: javax.persistence.PersistenceException: org.hibernate.HibernateException: Found shared references to a collection: org.jbpm.services.task.impl.model.TaskImpl.deadlines.endDeadlines
        at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1692)
        at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
        at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:492)
        at org.jbpm.shared.services.impl.JpaPersistenceContext.queryStringWithParameters(JpaPersistenceContext.java:190)
        at org.jbpm.shared.services.impl.JpaPersistenceContext.queryWithParametersInTransaction(JpaPersistenceContext.java:57)
        at org.jbpm.shared.services.impl.commands.QueryNameCommand.execute(QueryNameCommand.java:49)
        at org.jbpm.shared.services.impl.TransactionalCommandService.execute(TransactionalCommandService.java:71)
        at org.jbpm.kie.services.impl.RuntimeDataServiceImpl.getTasksByStatusByProcessInstanceId(RuntimeDataServiceImpl.java:880)
        at org.jbpm.services.cdi.impl.RuntimeDataServiceCDIImpl$Proxy$_$$_WeldClientProxy.getTasksByStatusByProcessInstanceId(Unknown Source)
        at com.example.MyService.findTaskIdsByProcessInstanceId(MyService.java:135)
        ...
Caused by: org.hibernate.HibernateException: Found shared references to a collection: org.jbpm.services.task.impl.model.TaskImpl.deadlines.endDeadlines
        at org.hibernate.engine.internal.Collections.processReachableCollection(Collections.java:183)
        at org.hibernate.event.internal.FlushVisitor.processCollection(FlushVisitor.java:46)
        at org.hibernate.event.internal.AbstractVisitor.processValue(AbstractVisitor.java:104)
        at org.hibernate.event.internal.AbstractVisitor.processValue(AbstractVisitor.java:65)
        at org.hibernate.event.internal.AbstractVisitor.processValues(AbstractVisitor.java:44)
        at org.hibernate.event.internal.AbstractVisitor.processComponent(AbstractVisitor.java:85)
        at org.hibernate.event.internal.AbstractVisitor.processValue(AbstractVisitor.java:110)
        at org.hibernate.event.internal.AbstractVisitor.processValue(AbstractVisitor.java:65)
        at org.hibernate.event.internal.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:59)
        at org.hibernate.event.internal.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:155)
        at org.hibernate.event.internal.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:216)
        at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:85)
        at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:44)
        at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1251)
        at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1319)
        at org.hibernate.internal.QueryImpl.list(QueryImpl.java:87)
        at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:606)
        at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:483)
        ... 276 more
2018-05-15 13:36:36,763 ERROR [org.hibernate.AssertionFailure] (default task-2) HHH000099: an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session): org.hibernate.AssertionFailure: possible nonthreadsafe access to session
2018-05-15 13:36:36,763 WARN  [org.jbpm.services.task.persistence.TaskTransactionInterceptor] (default task-2) Could not commit session: org.hibernate.AssertionFailure: possible nonthreadsafe access to session
    at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:160)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:582)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:456)
    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337)
    at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:50)
    at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1251)
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1319)
    at org.hibernate.internal.QueryImpl.list(QueryImpl.java:87)
    at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:606)
    at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:483)
    at org.jbpm.services.task.persistence.JPATaskPersistenceContext.queryStringWithParameters(JPATaskPersistenceContext.java:575)
    at org.jbpm.services.task.persistence.JPATaskPersistenceContext.queryWithParametersInTransaction(JPATaskPersistenceContext.java:398)
    at org.jbpm.services.task.impl.TaskDeadlinesServiceImpl.unschedule(TaskDeadlinesServiceImpl.java:137)
    at org.jbpm.services.task.commands.CancelDeadlineCommand.execute(CancelDeadlineCommand.java:71)
    at org.jbpm.services.task.commands.CancelDeadlineCommand.execute(CancelDeadlineCommand.java:33)
    at org.jbpm.services.task.commands.CompositeCommand.execute(CompositeCommand.java:145)
    at org.jbpm.services.task.commands.TaskCommandExecutorImpl$SelfExecutionCommandService.execute(TaskCommandExecutorImpl.java:65)
    at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41)
    at org.jbpm.services.task.persistence.TaskTransactionInterceptor.execute(TaskTransactionInterceptor.java:69)
    at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41)
    at org.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:73)
    at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41)
    at org.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:82)
    at org.jbpm.services.task.commands.TaskCommandExecutorImpl.execute(TaskCommandExecutorImpl.java:40)
    at org.jbpm.services.task.impl.command.CommandBasedTaskService.complete(CommandBasedTaskService.java:177)
    at org.jbpm.runtime.manager.impl.task.SynchronizedTaskService.complete(SynchronizedTaskService.java:119)
    at org.jbpm.kie.services.impl.UserTaskServiceImpl.complete(UserTaskServiceImpl.java:189)
    at org.jbpm.services.cdi.impl.UserTaskServiceCDIImpl$Proxy$_$$_WeldClientProxy.complete(Unknown Source)
    at com.example.MyService.completeTask(MyService.java:272)

Environment

  • Red Hat JBoss BPM Suite
    • 6.4
  • jBPM library embedded application
  • Singleton RuntimeManager strategy
  • Spans a transaction in user application

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