NPE with a reply activity inside a fault handler ------------------------------------------------
Key: ODE-926 URL: https://issues.apache.org/jira/browse/ODE-926 Project: ODE Issue Type: Bug Components: BPEL Runtime Affects Versions: 1.3.5 Environment: Windows 7, Tomcat 7.0.14, Apache ODE 1.3.5 WAR distribution Reporter: Jon Coogan In ODE 1.3.5 I am seeing a NullPointerException when I try to Reply from within a fault handler. This used to work in previous versions of ODE. Duplication Instructions 1. Refer to the attached BPEL process. 2. Deploy the process to ODE. 3. Run the process using a tool like SoapUI. The input doesn't matter. Observe the following stacktrace in the ODE output: Jun 14, 2011 3:46:35 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performanc e in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jdk1.6.0_22\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C :\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\Sys tem32\WindowsPowerShell\v1.0\;C:\Program Files\Perforce Jun 14, 2011 3:46:36 PM org.apache.coyote.AbstractProtocolHandler init INFO: Initializing ProtocolHandler ["http-bio-8080"] Jun 14, 2011 3:46:36 PM org.apache.coyote.AbstractProtocolHandler init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] Jun 14, 2011 3:46:36 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 1137 ms Jun 14, 2011 3:46:36 PM org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina Jun 14, 2011 3:46:36 PM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.14 Jun 14, 2011 3:46:36 PM org.apache.catalina.startup.HostConfig deployWAR INFO: Deploying web application archive ode.war 15:47:02,123 WARN [ODEServer] Config file C:\Users\lab\Desktop\apache-tomcat-7. 0.14\webapps\ode\WEB-INF\conf\ode-axis2.properties not found, default values wil l be used. 15:47:02,644 INFO [ODEServer] Using DAO Connection Factory class org.apache.ode .dao.jpa.BPELDAOConnectionFactoryImpl. 15:47:08,000 INFO [BpelServerImpl] BPEL Server Started. 15:47:08,006 INFO [SystemSchedulesConfig] SYSTEM CRON configuration: C:\Users\l ab\Desktop\apache-tomcat-7.0.14\webapps\ode\WEB-INF\conf\schedules.xml 15:47:09,106 INFO [DeploymentPoller] Poller started. 15:47:09,107 INFO [ODEServer] Process deployment polling started on path C:\Use rs\lab\Desktop\apache-tomcat-7.0.14\webapps\ode\WEB-INF\processes. 15:47:09,110 INFO [ODEServer] ODE Service Engine has been started. Jun 14, 2011 3:47:09 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory docs Jun 14, 2011 3:47:09 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory examples Jun 14, 2011 3:47:09 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory host-manager Jun 14, 2011 3:47:09 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory manager Jun 14, 2011 3:47:09 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory ROOT Jun 14, 2011 3:47:09 PM org.apache.coyote.AbstractProtocolHandler start INFO: Starting ProtocolHandler ["http-bio-8080"] Jun 14, 2011 3:47:09 PM org.apache.coyote.AbstractProtocolHandler start INFO: Starting ProtocolHandler ["ajp-bio-8009"] Jun 14, 2011 3:47:09 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 33324 ms 15:52:11,324 INFO [BpelServerImpl] Registered process {test}FaultHandlerReplyNPE-1. 15:52:11,327 INFO [DeploymentPoller] Deployment of artifact FaultHandlerReplyNPE successful: [{test}FaultHandlerReplyNPE-1] 15:52:26,906 WARN [ODEAxisOperationDispatcher] No operation has been found! 15:53:57,357 ERROR [JacobVPU] Method "run" in class "org.apache.ode.bpel.runtime.REPLY" threw an unexpected exception. java.lang.NullPointerException at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply2(BpelRuntimeContextImpl.java:603) at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply(BpelRuntimeContextImpl.java:589) at org.apache.ode.bpel.runtime.REPLY.run(REPLY.java:68) at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451) at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139) at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:968) at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208) at org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283) at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:238) at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279) at org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:426) at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:460) at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:450) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:518) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:512) at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284) at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) 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:662) 15:53:57,468 ERROR [BpelEngineImpl] Scheduled job failed; jobDetail=JobDetails( instanceId: null mexId: 4611686018427387903 processId: {test}FaultHandlerReplyNPE-1 type: INVOKE_INTERNAL channel: null correlatorId: null correlationKeySet: null retryCount: null inMem: true detailsExt: {}) java.lang.RuntimeException: java.lang.NullPointerException at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:464) at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139) at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:968) at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208) at org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283) at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:238) at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279) at org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:426) at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:460) at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:450) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:518) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:512) at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284) at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) 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:662) Caused by: java.lang.NullPointerException at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply2(BpelRuntimeContextImpl.java:603) at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply(BpelRuntimeContextImpl.java:589) at org.apache.ode.bpel.runtime.REPLY.run(REPLY.java:68) at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451) ... 20 more 15:53:57,567 WARN [MyRoleMessageExchangeImpl] Transaction is rolled back on sending back the response. 15:53:58,576 FATAL [BpelRuntimeContextImpl] Engine requested response while the message exchange 4611686018427387903 was in the state RESPONSE 15:53:58,580 ERROR [PICK] The message exchange seems to be in an unconsistent state, you're probably missing a reply on a request/response interaction. 15:53:58,590 ERROR [JacobVPU] Method "run" in class "org.apache.ode.bpel.runtime.REPLY" threw an unexpected exception. java.lang.IllegalStateException: Not in REQUEST state! at org.apache.ode.bpel.engine.MessageExchangeImpl.setResponse(MessageExchangeImpl.java:171) at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply2(BpelRuntimeContextImpl.java:609) at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply(BpelRuntimeContextImpl.java:589) at org.apache.ode.bpel.runtime.REPLY.run(REPLY.java:68) at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451) at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139) at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:968) at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208) at org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283) at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:238) at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279) at org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:426) at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:460) at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:450) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:518) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:512) at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284) at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) 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:662) 15:53:58,642 ERROR [BpelEngineImpl] Scheduled job failed; jobDetail=JobDetails( instanceId: null mexId: 4611686018427387903 processId: {test}FaultHandlerReplyNPE-1 type: INVOKE_INTERNAL channel: null correlatorId: null correlationKeySet: null retryCount: null inMem: true detailsExt: {}) java.lang.RuntimeException: java.lang.IllegalStateException: Not in REQUEST state! at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:464) at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139) at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:968) at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208) at org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283) at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:238) at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279) at org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:426) at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:460) at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:450) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:518) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:512) at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284) at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) 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:662) Caused by: java.lang.IllegalStateException: Not in REQUEST state! at org.apache.ode.bpel.engine.MessageExchangeImpl.setResponse(MessageExchangeImpl.java:171) at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply2(BpelRuntimeContextImpl.java:609) at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply(BpelRuntimeContextImpl.java:589) at org.apache.ode.bpel.runtime.REPLY.run(REPLY.java:68) at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451) ... 20 more 15:53:59,697 FATAL [BpelRuntimeContextImpl] Engine requested response while the message exchange 4611686018427387903 was in the state RESPONSE 15:53:59,701 ERROR [PICK] The message exchange seems to be in an unconsistent state, you're probably missing a reply on a request/response interaction. 15:53:59,711 INFO [BpelRuntimeContextImpl] ActivityRecovery: Registering activity 4, failure reason: org.apache.ode.bpel.iapi.BpelEngineException: Engine requested response while the message exchange 4611686018427387903 was in the state RESPONSE on channel 10 -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira