Description of problem: For some reason a transaction exception has thrown when an user from a group that has a task assigned try to list it. The exception is: 00:18:17,378 WARN [org.jbpm.services.task.persistence.TaskTransactionInterceptor] (http-mackoy/127.0.0.1:8080-2) Could not commit session: com.arjuna.ats.jta.exceptions.RollbackException: ARJUNA016081: The transaction implementation threw a RollbackException at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple.registerInterposedSynchronization(TransactionSynchronizationRegistryImple.java:144) at org.drools.persistence.TransactionSynchronizationRegistryHelper.registerTransactionSynchronization(TransactionSynchronizationRegistryHelper.java:14) [drools-persistence-jpa-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.drools.persistence.jta.JtaTransactionManager.registerTransactionSynchronization(JtaTransactionManager.java:262) [drools-persistence-jpa-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.services.task.persistence.JPATaskPersistenceContext.persistOrgEntity(JPATaskPersistenceContext.java:214) [jbpm-human-task-core-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.services.task.commands.UserGroupCallbackTaskCommand.persistIfNotExists(UserGroupCallbackTaskCommand.java:110) [jbpm-human-task-core-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.services.task.commands.UserGroupCallbackTaskCommand.addGroupFromCallbackOperation(UserGroupCallbackTaskCommand.java:153) [jbpm-human-task-core-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.services.task.commands.UserGroupCallbackTaskCommand.doCallbackGroupsOperation(UserGroupCallbackTaskCommand.java:131) [jbpm-human-task-core-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.services.task.commands.UserGroupCallbackTaskCommand.doUserGroupCallbackOperation(UserGroupCallbackTaskCommand.java:71) [jbpm-human-task-core-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.services.task.commands.GetTaskAssignedAsPotentialOwnerCommand.execute(GetTaskAssignedAsPotentialOwnerCommand.java:73) [jbpm-human-task-core-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.services.task.commands.GetTaskAssignedAsPotentialOwnerCommand.execute(GetTaskAssignedAsPotentialOwnerCommand.java:15) [jbpm-human-task-core-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.services.task.commands.TaskCommandExecutorImpl$SelfExecutionCommandService.execute(TaskCommandExecutorImpl.java:65) [jbpm-human-task-core-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.services.task.persistence.TaskTransactionInterceptor.execute(TaskTransactionInterceptor.java:54) [jbpm-human-task-core-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.services.task.commands.TaskCommandExecutorImpl.execute(TaskCommandExecutorImpl.java:40) [jbpm-human-task-core-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.services.task.impl.command.CommandBasedTaskService.getTasksAssignedAsPotentialOwnerByStatus(CommandBasedTaskService.java:190) [jbpm-human-task-core-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.console.ng.ht.backend.server.TaskServiceEntryPointImpl.getTasksAssignedAsPotentialOwnerByExpirationDateOptional(TaskServiceEntryPointImpl.java:74) [jbpm-console-ng-human-tasks-backend-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.jbpm.console.ng.ht.backend.server.TaskServiceEntryPointImpl$Proxy$_$$_WeldClientProxy.getTasksAssignedAsPotentialOwnerByExpirationDateOptional(TaskServiceEntryPointImpl$Proxy$_$$_WeldClientProxy.java) [jbpm-console-ng-human-tasks-backend-6.0.2-redhat-2.jar:6.0.2-redhat-2] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_51] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_51] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_51] at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_51] at org.jboss.errai.bus.server.io.AbstractRPCMethodCallback.invokeMethodFromMessage(AbstractRPCMethodCallback.java:48) [errai-bus-2.4.3.Final-redhat-4.jar:2.4.3.Final-redhat-4] at org.jboss.errai.bus.server.io.ValueReplyRPCEndpointCallback.callback(ValueReplyRPCEndpointCallback.java:22) [errai-bus-2.4.3.Final-redhat-4.jar:2.4.3.Final-redhat-4] at org.jboss.errai.bus.server.io.RemoteServiceCallback.callback(RemoteServiceCallback.java:54) [errai-bus-2.4.3.Final-redhat-4.jar:2.4.3.Final-redhat-4] at org.jboss.errai.cdi.server.CDIExtensionPoints$3.callback(CDIExtensionPoints.java:499) [errai-weld-integration-2.4.3.Final-redhat-4.jar:2.4.3.Final-redhat-4] at org.jboss.errai.bus.server.DeliveryPlan.deliver(DeliveryPlan.java:47) [errai-bus-2.4.3.Final-redhat-4.jar:2.4.3.Final-redhat-4] at org.jboss.errai.bus.server.ServerMessageBusImpl.sendGlobal(ServerMessageBusImpl.java:284) [errai-bus-2.4.3.Final-redhat-4.jar:2.4.3.Final-redhat-4] at org.jboss.errai.bus.server.SimpleDispatcher.dispatchGlobal(SimpleDispatcher.java:46) [errai-bus-2.4.3.Final-redhat-4.jar:2.4.3.Final-redhat-4] at org.jboss.errai.bus.server.service.ErraiServiceImpl.store(ErraiServiceImpl.java:92) [errai-bus-2.4.3.Final-redhat-4.jar:2.4.3.Final-redhat-4] at org.jboss.errai.bus.server.service.ErraiServiceImpl.store(ErraiServiceImpl.java:109) [errai-bus-2.4.3.Final-redhat-4.jar:2.4.3.Final-redhat-4] at org.jboss.errai.bus.server.servlet.DefaultBlockingServlet.doPost(DefaultBlockingServlet.java:140) [errai-bus-2.4.3.Final-redhat-4.jar:2.4.3.Final-redhat-4] at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1] at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.jboss.solder.servlet.exception.CatchExceptionFilter.doFilter(CatchExceptionFilter.java:65) [solder-impl-3.2.1.Final.jar:3.2.1.Final] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.jboss.solder.servlet.event.ServletEventBridgeFilter.doFilter(ServletEventBridgeFilter.java:74) [solder-impl-3.2.1.Final.jar:3.2.1.Final] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.jbpm.designer.web.filter.impl.PluggableFilter.doFilter(PluggableFilter.java:70) [jbpm-designer-backend-6.0.2-redhat-2.jar:6.0.2-redhat-2] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.uberfire.security.server.UberFireSecurityFilter.doFilter(UberFireSecurityFilter.java:266) [uberfire-security-server-0.3.2-redhat-2.jar:0.3.2-redhat-2] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:499) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.2.1.Final-redhat-10.jar:7.2.1.Final-redhat-10] at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.2.1.Final-redhat-10.jar:7.2.1.Final-redhat-10] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.2.1.Final-redhat-10.jar:7.2.1.Final-redhat-10] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:408) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51] Caused by: javax.transaction.RollbackException: ARJUNA016083: Can't register synchronization because the transaction is in aborted state at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.registerSynchronizationImple(TransactionImple.java:370) at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple.registerInterposedSynchronization(TransactionSynchronizationRegistryImple.java:140) ... 61 more Version-Release number of selected component (if applicable): 6.0.0 CR2 How reproducible: always Steps to Reproduce: 1. create an user called john with role admin 2. create an user called manager with role admin,manager 3. create an user called broker with role admin,broker 4. create an user called appraiser with role admin,appraiser 5. clone the Example App git repo and build the project 6. As user john, starts the process MortgageApplication with values: Applicant Name = john Address = Street X Social Security Number = 1234567894 Income = 10000 Property Sale Price = 200000 Down Payment = 100000 Amortization = 29 7. Click in that process instance just started and view "Process model" - it should be stopped at Data Correction (it has broker as groupId). 8. logout john and login as broker 9. click on Task List Actual results: Transaction Exceptions in log and process is stuck Expected results: No exceptions and user should be able to see the task assigned to him Additional info: After this exception even other processes that have been working becomes unstable, specially those that have hutman tasks assigned to groups. To make them (other processes, not the mortgage) stable again we need to delete the server tmp and data folder.
I am setting this BZ as "High" priority/severity because I am not sure if the issue is with the BigApp or with the Business Central. Following the steps that I've described here I can consistently reproduce the issue, breaking that process and others deployed.
Allesandro, you are right. Using your steps I was able to reproduce the issue with BPMS 6.0.0 CR2. As I (QE) was testing the bigapp I was just using one user with all the 4 roles required (manager, broker, appraiser, admin) and with this configuration it worked correctly. I would suggest to use the same (use just 1 user with all the required roles) as a workaround for this issue. I'm also attaching server log from my session when I reproduced the issue with clean BPMS installation.
Created attachment 857410 [details] server.log showing the exception
This is caused the fact that you're using both a user and a group with the same name, which is documented as not allowed.
Yes, Kris you are right, the current Example App Guide says to create users with the same name in group, like appraiser, broker and manager causing tons of transaction exceptions. However should be nice a roles/group validation when a human task is reached and there are in potential owners users and groupsId with the same value instead of thrown an exception. Especially because the whole behaviour of workbench is affected, even other process executions becomes unstable after this exception. cheers, Alessandro
Based on the latest comment lowering severity to medium.
Note that the original exception is probably hidden by https://bugzilla.redhat.com/show_bug.cgi?id=1056646 , which is already solved. Maciej, could you make sure that an appropriate error message is shown - when an operation is invoked on the task service that would cause this, that an appropriate exception is thrown on the task service (not a unique id constraint violation) - an adequate error message (for example the exception message) is shown in the UI if such an operation is called from the console - if this exception does occur, that it only fails the current command and doesn't make the service unstable for further invocations If you need help from someone else on any of this, feel free to reassign the BZ when you're done.
all three requirements fixed, now errors will be presented in the standard ErrorPopup in UI, where it was possible we catch the exception and try to provide more meaningful information and the problem with transaction sync was already resolved with previous fixes. jbpm master: https://github.com/droolsjbpm/jbpm/commit/ca7f3d758089aae4845e8896ad6b06ece18b53a9 6.0.x: https://github.com/droolsjbpm/jbpm/commit/229cebf0cb647e69608bd5df0a5f1d3befe94c00 jbpm-console-ng master: https://github.com/droolsjbpm/jbpm-console-ng/commit/e871fee80e7ccc242ad15fd7e3ea839ae0309751 6.0.x: https://github.com/droolsjbpm/jbpm-console-ng/commit/b790a808172beef86909a386078ba57639bd5b77
Ok, verified with BPMS 6.0.1 ER1. I intentionaly created a user with the same role as the username (manager) and upon entering the task list, the error dialog was shown stating the reason for error. I then logged in with correct user and was able to complete the process.