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