read() on the stream returned by HttpMethod.getResponseBodyAsStream() cannot be 
simply canceled with Thread.interrupt
---------------------------------------------------------------------------------------------------------------------

                 Key: HTTPCLIENT-596
                 URL: http://issues.apache.org/jira/browse/HTTPCLIENT-596
             Project: HttpComponents HttpClient
          Issue Type: Bug
          Components: HttpClient
    Affects Versions: 3.0 Final, 3.0.1
         Environment: Windows XP
            Reporter: Arnaud Masson


I have a working thread that needs to download some big file with 
HttpMethod.getResponseBodyAsStream().
A swing component displays a progress indication and has a "stop" button.
When the stop button is clicked by the user, I would like to stop the download 
as soon as possible, so I call interrupt() on the working thread from the EDT, 
which should throw an InterruptedException or InterruptedIOException inside the 
working thread.

But the read() operation on the stream returned by 
HttpMethod.getResponseBodyAsStream() is not interrupted.
The working thread stacktrace is:
        SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int)  
//<--------- blocking
        SocketInputStream.read(byte[], int, int) line: 129      
        BufferedInputStream.fill() line: 218    
        BufferedInputStream.read() line: 235    
        ChunkedInputStream.getChunkSizeFromInputStream(InputStream) line: 249   
        ChunkedInputStream.nextChunk() line: 220        
        ChunkedInputStream.read(byte[], int, int) line: 175     
        AutoCloseInputStream(FilterInputStream).read(byte[], int, int) line: 
111        
        AutoCloseInputStream.read(byte[], int, int) line: 107   
        ...

I know that  the JRE SocketInputStream doesn't support interrupt() but 
HttpClient should hide this problem.
A workaround is to use request.abort() but it should be possible to cancel a 
thread without knowing on what it is blocked.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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

Reply via email to