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

Rick McGuire resolved GERONIMO-3751.
------------------------------------

    Resolution: Fixed

Committed revision 612422.

Thanks Sangjin!

> callbacks may not be completed when caller uses future.get() too to complete 
> request handling
> ---------------------------------------------------------------------------------------------
>
>                 Key: GERONIMO-3751
>                 URL: https://issues.apache.org/jira/browse/GERONIMO-3751
>             Project: Geronimo
>          Issue Type: Bug
>      Security Level: public(Regular issues) 
>          Components: AsyncHttpClient
>    Affects Versions: 1.x
>            Reporter: Sangjin Lee
>            Priority: Minor
>         Attachments: GERONIMO-3751.patch
>
>
> Currently the callback methods from AsyncHttpClientCallback get called 
> *after* the response future object is completed.  I think this causes a 
> subtle bug that may prevent the callback methods from being completed if one 
> uses both the callback and the future.
> For example, consider the following case:
> ResponseFuture future = client.invoke(..., callback); // callback is not null
> HttpResponseMessage response = future.get(); // this blocks until future is 
> complete
> Since the future is completed before the callback is invoked, the caller 
> thread in this case gets unblocked before the callback is called.  If the 
> caller thread goes away, then there is possibility that the callback may not 
> be completed or may not even be called, depending on the timing.
> This strikes me as a bug...  I propose we invoke the callback first and then 
> complete the future so the callbacks are guaranteed to be completed even if 
> future is used.

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