ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sathwik Bantwal Premakumar (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ODE-1010) MEX response is sent with delay
Date Tue, 10 Dec 2013 06:00:15 GMT

    [ 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
> Scenario 3: Asynchronously sending response via template approach. 
> Response is send by INVOKE_INTERNAL job and that job is not committed until forEach is

This message was sent by Atlassian JIRA

View raw message