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


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