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