0 Replies Latest reply on Nov 8, 2007 12:10 PM by mavrides

    Asynchronous execution within fork throws TransactionRolledb

    mavrides

      Hi, I have a rather simple process that uses a fork with 3 branches. If I set the nodes in the fork as asynchronous (async='true') I get a TransactionRolledbackLocalException with a HibernateStaleObjectException. Now, I know that Tom Bayens has mentioned that this doesn't really matter, however, even though the transactions are rolledback, the action handlers modify the database and these changes are persisted in spite of the rollback.

      I am using JBoss AS 4.0.5GA with JBPM 3.2.2 EAR (not the suite) with MySQL 5.0.4 . I have tried modifying the transaction isolation as mentioned in the forums, to all possible levels but that didn't solve anything.

      Here is part of the stack trace:

      TransactionRolledbackLocalException in method: public abstract java.lang.Object org.jbpm.command.CommandService.execute(org.jbpm.command.Command), causedBy:
      org.jbpm.JbpmException: couldn't execute org.jbpm.ejb.impl.ExecuteJobCommand@1812b51
       at org.jbpm.ejb.impl.CommandServiceBean.execute(CommandServiceBean.java:92)
       at sun.reflect.GeneratedMethodAccessor234.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:597)
       .....
       .....
      Caused by: org.jbpm.graph.def.DelegationException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jbpm.graph.exe.Token#58]
       at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:387)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:597)
       .....
       .....
      


      I would like to know whether it is possible to overcome this problem of having asynchronous nodes within a fork because even though it seems trivial I can't find a way around it.

      Regards,

      Andreas