Bug 780632 (SOA-3072)

Summary: ExecuteTimerCommand no longer silently handles execution of deleted timers
Product: [JBoss] JBoss Enterprise SOA Platform 5 Reporter: Martin Weiler <mweiler>
Component: JBPM - within SOAAssignee: Kevin Conner <kevin.conner>
Status: CLOSED NEXTRELEASE QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: 5.1.0 GA   
Target Milestone: ---   
Target Release: 5.2.0.ER4   
Hardware: Unspecified   
OS: Unspecified   
URL: http://jira.jboss.org/jira/browse/SOA-3072
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-11-03 09:42:44 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Martin Weiler 2011-05-16 14:12:51 UTC
Link type: Superset, Source: SOA-3072, Destination: SOA-3077
Help Desk Ticket Reference: https://na7.salesforce.com/500A0000007Ax8y
Steps to Reproduce: Use bpm_orchestration1 quickstart, and change the processdefinition.xml like this:

   <node name="node1">
      <action name="action2" class="org.jboss.soa.esb.services.jbpm.actionhandlers.EsbActionHandler">
         <esbCategoryName>BPM_Orchestration_Service1</esbCategoryName>
         <esbServiceName>Service1</esbServiceName>
         <bpmToEsbVars>
         	<mapping bpm="theBody" esb="BODY_CONTENT" />
         </bpmToEsbVars>
         <esbToBpmVars>
         	<mapping esb="BODY_CONTENT" bpm="theBody" />
         </esbToBpmVars>
      </action>
      <timer name="exception_timer" duedate="20seconds" transition="time-out-transition"/>
      <transition to="node2"></transition>
      <transition to="end1" name="time-out-transition"/>
   </node>
project_key: SOA

Adding a timer as described in the timeout scenario of the jBPM-to-ESB Exception Handling Chapter of the ESB Services Guide leads to the following ERROR in the log when the timer is executed:

16:04:05,318 ERROR [JmsServerSession] Unexpected error delivering message delegator->JBossMessage[5347551745671169]:PERSISTENT, deliveryId=0
org.jbpm.JbpmException: could not process message delegator->JBossMessage[5347551745671169]:PERSISTENT, deliveryId=0
	at org.jboss.soa.esb.services.jbpm.integration.command.AbstractMessageListener.onMessage(AbstractMessageListener.java:126)
	at org.jboss.soa.esb.services.jbpm.integration.command.JobListener.onMessage(JobListener.java:16)
	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)
	at org.jboss.internal.soa.esb.dependencies.JCAInflowAdapter$1.invoke(JCAInflowAdapter.java:276)
	at org.jboss.soa.esb.listeners.jca.EndpointProxy.delivery(EndpointProxy.java:258)
	at org.jboss.soa.esb.listeners.jca.EndpointProxy.invoke(EndpointProxy.java:150)
	at $Proxy302.onMessage(Unknown Source)
	at org.jboss.resource.adapter.jms.inflow.JmsServerSession.onMessage(JmsServerSession.java:179)
	at org.jboss.jms.client.container.ClientConsumer.callOnMessageStatic(ClientConsumer.java:160)
	at org.jboss.jms.client.container.SessionAspect.handleRun(SessionAspect.java:831)
	at org.jboss.aop.advice.org.jboss.jms.client.container.SessionAspect_z_handleRun_14978629.invoke(SessionAspect_z_handleRun_14978629.java)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:172)
	at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:86)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.jms.client.delegate.ClientSessionDelegate.run(ClientSessionDelegate.java)
	at org.jboss.jms.client.JBossSession.run(JBossSession.java:199)
	at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:236)
	at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)
	at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
Caused by: org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [org.jbpm.job.Timer#2]
	at org.hibernate.impl.SessionFactoryImpl$2.handleEntityNotFound(SessionFactoryImpl.java:418)
	at org.hibernate.proxy.AbstractLazyInitializer.checkTargetState(AbstractLazyInitializer.java:154)
	at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:143)
	at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:174)
	at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
	at org.jbpm.job.Timer_$$_javassist_68.getProcessInstance(Timer_$$_javassist_68.java)
	at org.jboss.soa.esb.services.jbpm.integration.job.ExecuteTimerCommand.execute(ExecuteTimerCommand.java:68)
	at org.jboss.soa.esb.services.jbpm.integration.command.AbstractMessageListener.onMessage(AbstractMessageListener.java:66)
	... 25 more

The code added with rev 35477 should happen after the JobUtil.isDeleted(timer) check.

Comment 1 Martin Weiler 2011-05-17 13:25:10 UTC
Link: Added: This issue incorporates SOA-3077


Comment 2 Kevin Conner 2011-08-25 14:33:22 UTC
Link: Added: This issue depends JBESB-3668


Comment 3 Kevin Conner 2011-08-31 17:32:08 UTC
Ported fix across to ESB, should be in ER4

Comment 4 Jiri Pechanec 2011-11-03 09:42:44 UTC
Verified in ER6