-
Bug
-
Resolution: Done
-
Major
-
jBPM 4.0.CR1
-
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!