Bug 1059534 - BigApp: Transaction Synchronization Exception listing human tasks
Summary: BigApp: Transaction Synchronization Exception listing human tasks
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: JBoss BPMS Platform 6
Classification: Retired
Component: Business Central
Version: 6.0.0
Hardware: Unspecified
OS: Unspecified
high
medium
Target Milestone: ER1
: 6.0.1
Assignee: Maciej Swiderski
QA Contact: Jan Hrcek
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-01-30 05:34 UTC by Alessandro Lazarotti
Modified: 2014-08-06 20:02 UTC (History)
4 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2014-08-06 20:02:38 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
server.log showing the exception (120.88 KB, text/x-log)
2014-01-30 09:38 UTC, Jan Hrcek
no flags Details

Description Alessandro Lazarotti 2014-01-30 05:34:24 UTC
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.

Comment 1 Alessandro Lazarotti 2014-01-30 06:10:58 UTC
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.

Comment 2 Jan Hrcek 2014-01-30 09:37:38 UTC
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.

Comment 3 Jan Hrcek 2014-01-30 09:38:16 UTC
Created attachment 857410 [details]
server.log showing the exception

Comment 4 Kris Verlaenen 2014-01-30 13:54:37 UTC
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.

Comment 5 Alessandro Lazarotti 2014-01-30 18:22:23 UTC
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

Comment 6 Marek Baluch 2014-01-30 18:57:02 UTC
Based on the latest comment lowering severity to medium.

Comment 7 Kris Verlaenen 2014-01-30 19:56:51 UTC
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.

Comment 8 Maciej Swiderski 2014-01-31 17:27:24 UTC
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

Comment 9 Jan Hrcek 2014-02-18 12:09:15 UTC
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.


Note You need to log in before you can comment on or make changes to this bug.