[
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)