[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-734?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12562970#action_12562970
 ] 

Roland Weber commented on HTTPCLIENT-734:
-----------------------------------------

This is getting nastier the more I think about it. If abort() is called while 
waiting for a connection, the thread should be unblocked and an 
InterruptedException is thrown. If abort is called after the 
ConnectionReleaseTrigger (CRT) becomes available, the connection is released 
and the next IO operation will throw an IOException. So far, so good.
If abort() is called just after the connection is obtained and before the CRT 
has been set, things get tricky. The thread will be interrupted, but since it 
is not blocked it will not get an InterruptedException. We have to check and 
reset the interrupt status, release the connection and throw an 
InterruptedException. The latter two may happen in reverse order, if the 
connection is released in a finally{} block.
We'll need some synchonization and maybe a volatile declaration in 
HttpRequestBase, plus code for checking the interrupt status in 
ClientRequestDirector (CRD).

The alternative would be that applications have to do both, call abort() and 
interrupt the thread to make sure it isn't waiting for a connection. Ensuring 
proper connection release in the application would become really challenging if 
we require that.

cheers,
  Roland


> request.abort() should interrupt thread waiting for a connection
> ----------------------------------------------------------------
>
>                 Key: HTTPCLIENT-734
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-734
>             Project: HttpComponents HttpClient
>          Issue Type: Improvement
>    Affects Versions: 4.0 Alpha 2
>            Reporter: Roland Weber
>             Fix For: 4.0 Beta 1
>
>         Attachments: connabort.patch
>
>
> Calls to HttpRequestBase.abort() will not unblock a thread that is still 
> waiting for a connection and therefore has no ConnectionReleaseTrigger yet.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to