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

Christian Fonden commented on ODE-606:
--------------------------------------

I did further research regarding this bug: in my case, the 
ExtensionContext::complete() Method is called from another Thread as the one 
that called the AbstractAsyncExtensionOperation::run method. 

When I called the complete() Method from the same Thread as the one that called 
the run() method, it worked just fine!

So I think the problem is about the ExtensionContext Class not being thread 
safe. So you should make this class thread save as it cannot be ensured that 
there is no multithreading used in an extension activity. (So in my case: I use 
RMI to react on external events that are received by another thread). 

Hope that will help you!

> Process blocks although Async Extension Operation is marked completed or 
> completedWithFault
> -------------------------------------------------------------------------------------------
>
>                 Key: ODE-606
>                 URL: https://issues.apache.org/jira/browse/ODE-606
>             Project: ODE
>          Issue Type: Bug
>          Components: BPEL Runtime
>    Affects Versions: 2.0
>         Environment: Tomcat5.5 Ode Trunk Rev 766476 Debian Linux 1,5G RAM, 
> integrated DB
>            Reporter: Christian Fonden
>            Assignee: Tammo van Lessen
>
> When a new extension Activity extending AbstractAsynchExtensionOperation is 
> developed and deployed, a bad scheduler issue occurs: 
>  - the run method does neither complete with errors nor it completes 
> successfully (intended!)
>  - a java timer waits 10 seconds and the calls context.completeWithFault.
>  - then the activity gets marked as faulted, but the process runs until it is 
> stopped by the 30 second axis2 call timeout, returning the axis2 stack trace 
> to the invoking client. 
> It seems like the situation that the activity marks itsself as faulted by 
> calling the context.completeWithFault() method in the ExtensionContext class 
> is somehow *not* being propagated to the navigator and the whole BPEL Process 
> is blocked by the faulted Activity. Also no compensation is called. 
> Again to make it clear: the time integrated in the extension fires after 10 
> seconds, but the process completes on Axis2 Timeout after 30 seconds. 
> The missing code can be easily reproduced by 
> - create a synchronous bpel process, containing just the async extension 
> activity
> - the extension activity starts a timer in its run() method
> - the timer calls completeWtih fault after a short time (e.g. immediately)
> - the process is still blocked. 

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

Reply via email to