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]