cancel
Showing results for 
Search instead for 
Did you mean: 

Transaction rollback in activiti job

nicolas1
Champ in-the-making
Champ in-the-making
Hi,

I have a JavaDelegate which calls a JPA/JTA service (OSGi).
If an exception is raised in the JPA layer, the transaction is rolled back. But then an issue occurs in activiti because it tries to add a transaction listener when catching the original exception :

org.activiti.engine.ActivitiException: RollbackException while registering synchronization
   at org.activiti.engine.impl.cfg.jta.JtaTransactionContext.addTransactionListener(JtaTransactionContext.java:76)[105Smiley Surprisedrg.activiti.engine:5.16.0]
   at org.activiti.engine.impl.cmd.ExecuteJobsCmd.execute(ExecuteJobsCmd.java:85)[105Smiley Surprisedrg.activiti.engine:5.16.0]
   at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24)[105Smiley Surprisedrg.activiti.engine:5.16.0]
   at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57)[105Smiley Surprisedrg.activiti.engine:5.16.0]
   at org.activiti.engine.impl.interceptor.JtaTransactionInterceptor.execute(JtaTransactionInterceptor.java:64)[105Smiley Surprisedrg.activiti.engine:5.16.0]
   at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)[105Smiley Surprisedrg.activiti.engine:5.16.0]
   at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)[105Smiley Surprisedrg.activiti.engine:5.16.0]
   at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)[105Smiley Surprisedrg.activiti.engine:5.16.0]
   at org.activiti.engine.impl.jobexecutor.ExecuteJobsRunnable.run(ExecuteJobsRunnable.java:52)[105Smiley Surprisedrg.activiti.engine:5.16.0]
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_25]
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_25]
   at java.lang.Thread.run(Thread.java:724)[:1.7.0_25]
Caused by: javax.transaction.RollbackException: Transaction is marked for rollback
   at org.apache.geronimo.transaction.manager.TransactionImpl.registerSynchronization(TransactionImpl.java:154)[74Smiley Surprisedrg.apache.aries.transaction.manager:1.1.0]
   at org.activiti.engine.impl.cfg.jta.JtaTransactionContext.addTransactionListener(JtaTransactionContext.java:72)[105Smiley Surprisedrg.activiti.engine:5.16.0]
   … 11 more

As a result the job retries is not decremented and the original exception is hidden.
I think Activiti should be able to handle properly this case, but maybe I am doing something wrong ?

Nicolas
3 REPLIES 3

jbarrez
Star Contributor
Star Contributor
Is Activiti configured to use the same transaction (or transaction manager)?

nicolas1
Champ in-the-making
Champ in-the-making
Yes it uses the same transaction manager.

leroux
Champ in-the-making
Champ in-the-making

This post is quite old but, i experience the same issue with activiti 5.16.

In my service Task, i'm trying to use rendition service in order to create a pdf rendition of the node. If rendition fails for any reason (oo not available, document cannot be transformed as pdf, etc), the transaction is infinitively rolled back although i tried to catch exception.

I would like that issue to be catched in BPMN workflow (raise error, gateway conditional or something in a bpmn flow) but i can't because of rollback. Is it possible to disable rollback for this particular task ?

Thanks by advance if you 've any idea to solve this issue .