Uploaded image for project: 'jBPM'
  1. jBPM
  2. JBPM-2387

integrity constraint violation in process that runs end to end with no wait

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • jBPM 4.0
    • jBPM 4.0.CR1
    • Runtime Engine
    • None

      I am developing a process that, depending on various decisions, can potentially run from start to finish without any wait. In this scenario I get the following exception:

      org.hibernate.exception.ConstraintViolationException: could not delete: org.jbpm.jpdl.internal.model.JpdlExecution#1
      at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)
      at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
      at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2569)
      at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2725)
      at org.hibernate.action.EntityDeleteAction.execute(EntityDeleteAction.java:97)
      at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
      at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
      at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:172)
      at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
      at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
      at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
      at org.jbpm.pvm.internal.tx.HibernateSessionResource.prepare(HibernateSessionResource.java:54)
      at org.jbpm.pvm.internal.tx.StandardTransaction.commit(StandardTransaction.java:106)
      at org.jbpm.pvm.internal.tx.StandardTransaction.complete(StandardTransaction.java:65)
      at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:61)
      at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:54)
      at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:55)
      at org.jbpm.pvm.internal.svc.ExecutionServiceImpl.startProcessInstanceByKey(ExecutionServiceImpl.java:65)
      at com.ioko.jbpm.JbpmTest.testEnd2End(JbpmTest.java:29)
      Caused by: java.sql.SQLException: Integrity constraint violation FK_EXEC_PARENT table: JBPM4_EXECUTION in statement [delete from JBPM4_EXECUTION where DBID_=? and DBVERSION_=?]
      at org.hsqldb.jdbc.Util.throwError(Unknown Source)
      at org.hsqldb.jdbc.jdbcPreparedStatement.executeUpdate(Unknown Source)
      at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2551)
      ... 38 more

      This is a serious problem for my process. Attached is a maven project that reproduces the problem. You should just be able to run mvn test to see the error.

      The problem seems to be with the fork/join. If I take that out it runs ok. I tried to workaround this issue by introducing a state with short timeout towards the start of the process but then I get a different error. I can reproduce this fairly easily if it would be of help in diagnosis.

      I make a lot of use of custom nodes. Could a workaround be to use state with handlers instead of custom nodes?

      ps. I tried to read the filing bug guidelines but the site is under maintenance. I feel this is a fairly clear cut issue and have provided test case so hope I haven't broken any rules!

            tom.baeyens Tom Baeyens (Inactive)
            jugglingcats_jira Alfie Kirkpatrick (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: