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 of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.