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