[ 
https://issues.apache.org/jira/browse/CXF-2711?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Guillaume Sauthier updated CXF-2711:
------------------------------------

    Attachment: CXF-2711.patch

Set ClientCallback.done field as volatile.

> Concurrency issue with AsyncHandler
> -----------------------------------
>
>                 Key: CXF-2711
>                 URL: https://issues.apache.org/jira/browse/CXF-2711
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 2.2.6
>         Environment: OW2 JOnAS 5.2
>            Reporter: Guillaume Sauthier
>         Attachments: CXF-2711.patch
>
>
> The problem is on the access to the ClientCallback.done boolean
> You can have a situation where the client uses the Future object he got from 
> the dispatch.invokeAsync() method.
> It performs an active wait using Future.isDone()
> On another Thread, the WS response comes back, and the 
> JaxwsClientCallback.handlerResponse() is called. The handler provided by the 
> client is called, so far everything went well. After the 
> AsyncHandler.handleResponse() invocation, the ClientCallback set the 'done' 
> boolean to true.
> But this value change is never seen by the Future.isDone() invocations!
> Because the ClientCallback.done boolean is not 'volatile'.
> I've made a try with a volatile 'done' and it works perfectly.
> Could it be possible that this simple change makes it to the 2.2.7 ?

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