[ 
https://issues.apache.org/jira/browse/ODE-1010?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13843984#comment-13843984
 ] 

Sathwik Bantwal Premakumar commented on ODE-1010:
-------------------------------------------------

Registering a Timer to commit the transaction is probably not the right way to 
tackle this problem. Reply is similar to a one-way invoke. A better way would 
be to register a InvokeResponseListener or probably a new type of Response 
Listener for the Reply. This way the transaction would get committed and this 
will also provide a mechanism for the process to handle failures. A similar 
effort has been made in ODE-714 which is under review.

> MEX response is sent with delay
> -------------------------------
>
>                 Key: ODE-1010
>                 URL: https://issues.apache.org/jira/browse/ODE-1010
>             Project: ODE
>          Issue Type: Bug
>          Components: BPEL Runtime
>            Reporter: Jayant Vaish
>         Attachments: ODE_1010.patch
>
>
> In all the message exchanges where the response is send this issue comes 
> which can be explained by following scenarios.
> Scenario 1: Synchronous messages exchange via wsdl call.
> When process is invoked and reply is send in "response" activity after that 
> one forEach loop is their.Process is invoked by INVOKE_INTERNAL job and with 
> the same job with REPLY, response is set and moves to forEach without sending 
> the response, which is expected as response will be send after the 
> transaction is committed (following code illustrates).
> _engine._contexts.scheduler.registerSynchronizer(new Scheduler.Synchronizer() 
> {
>             public void afterCompletion(boolean success) {
>                 __log.debug("Received myrole mex response callback");
>                 if( success ) {
>                     ResponseCallback callback = _waitingCallbacks.remove(cid);
>                     if (callback != null) callback.responseReceived();
>                 } else {
>                     __log.warn("Transaction is rolled back on sending back 
> the response.");
>                 }
>             }
>             public void beforeCompletion() {
>             }
>         });
> So, the response is send after the forEach (there can be other scenarios as 
> well other than forEach) which delays the response.
> Scenario 2: Synchronous messages exchange via template call.
> Instead of invoking process with wsdl call (as done in scenario 1) we do by 
> template call (receive-reply two-way invocation) then also same issue comes 
> as described in scenario 1.
> Scenario 3: Asynchronously sending response via template approach. 
> Response is send by INVOKE_INTERNAL job and that job is not committed until 
> forEach is executed.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Reply via email to