You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by "Alex Boisvert (JIRA)" <ji...@apache.org> on 2009/08/19 17:57:15 UTC

[jira] Updated: (ODE-535) conflictingReceive fault is thrown where no error is expected

     [ https://issues.apache.org/jira/browse/ODE-535?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alex Boisvert updated ODE-535:
------------------------------

    Fix Version/s:     (was: 1.3.3)
                   1.3.4

> conflictingReceive fault is thrown where no error is expected
> -------------------------------------------------------------
>
>                 Key: ODE-535
>                 URL: https://issues.apache.org/jira/browse/ODE-535
>             Project: ODE
>          Issue Type: Bug
>          Components: BPEL Runtime
>    Affects Versions: 1.3.2
>            Reporter: Rafal Rusin
>             Fix For: 1.3.4
>
>         Attachments: conflictingReceive-reproduction.diff
>
>
> I made a following process:
>             <bpws:receive createInstance="yes" operation="initiate"> 
>                 <bpws:correlations> 
>                     <bpws:correlation initiate="yes"/> 
>                 </bpws:correlations> 
>             </bpws:receive> 
>             <bpws:reply operation="initiate"/>
>        <bpws:scope>
>                 <bpws:eventHandlers>
>                     <bpws:onEvent operation="initiate">
>                         <bpws:correlations>
>                             <bpws:correlation initiate="no"/>
>                         </bpws:correlations>
>                         <bpws:scope>
>                             <bpws:sequence>
>                                 <bpws:reply operation="initiate"/>
>                             </bpws:sequence>
>                         </bpws:scope>
>                     </bpws:onEvent>
>                 </bpws:eventHandlers>
>                 <bpws:sequence>
>                     <bpws:wait>
>                         <bpws:for><![CDATA['PT30M']]></bpws:for>
>                     </bpws:wait>
>                 </bpws:sequence>
>         </bpws:scope>
> Then I sent two requests with delay 1 second:
> initiate 101
> wait 1 second
> initiate 101
> A delay is for not causing conflictingRequest fault (which is not distinguished by ODE and thrown as conflictingReceive according to this: http://cwiki.apache.org/confluence/display/ODExSITE/WS-BPEL+2.0+Specification+Compliance).
> For second request I got a conflictingReceive fault. 
> However, here, no error should be thrown. 
> Here's a stacktrace for throwing conflictingReceive:
> 17:18:44,223 | ERROR | ODEServer-1 | BpelRuntimeContextImpl   | eronimo.kernel.log.GeronimoLog  108 | conflictingReceive 
> java.lang.Exception
>         at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.select(BpelRuntimeContextImpl.java:333)
>         at org.apache.ode.bpel.runtime.EH_EVENT$SELECT.run(EH_EVENT.java:137)
>         at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         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:870)
>         at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeInstance(PartnerLinkMyRoleImpl.java:240)
>         at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:224)
>         at org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:392)
>         at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:391)
>         at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:388)
>         at org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:386)
>         at org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:380)
>         at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:208)
>         at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:379)
>         at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:376)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:123)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>         at java.lang.Thread.run(Thread.java:595)
> So, I think an OutstandingRequestManager may incorrectly throw an exception on select registration, while there should be an error later on receiving an actual request. 
> This will allow to dispatch a request via reply during onevent without any fault. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.