hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Glory Chen (JIRA)" <j...@apache.org>
Subject [jira] Created: (HTTPCLIENT-1060) Http abort API is not working as expected.
Date Mon, 21 Feb 2011 09:13:39 GMT
Http abort API is not working as expected.
------------------------------------------

                 Key: HTTPCLIENT-1060
                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1060
             Project: HttpComponents HttpClient
          Issue Type: Bug
          Components: HttpClient
    Affects Versions: 4.0.3
         Environment: Ubuntu, Android platform and Android Phone
            Reporter: Glory Chen


I'm testing a case related to abort a HttpGet request.
When call HttpGet.abort() method, Http request cannot be aborted immediately in the receiveResponseHeader
step.

Here's the log for the case.
02-16 11:21:58.643: INFO/System.out(2601): HttRequestEexecutor doSendRequest() End
02-16 11:21:58.643: INFO/System.out(2601): HttpRequestExecutor doReceiveResponse() begin
02-16 11:21:58.643: INFO/System.out(2601): HttpRequestExecutor doReceiveResponse() conn.receiveResponseHeader()
02-16 11:21:58.643: INFO/System.out(2601): AbstractSessionInputBuffer.fillBuffer() instream.read()
begin
02-16 11:21:59.010: WARN/TestHttpStack(2601): Abort the http request!
02-16 11:21:59.010: INFO/System.out(2601): HttpRequestBase abort() localTrigger.abortconnection()
02-16 11:21:59.010: INFO/System.out(2601): DefaultClientConnection shutdown(): Connection
shut down
02-16 11:21:59.010: INFO/System.out(2601): SocketHttpClientConnection shutdown()
02-16 11:21:59.010: INFO/System.out(2601): SocketHttpClientConnection shutdown() close the
socket!
02-16 11:21:59.010: INFO/System.out(2601): DefaultClientConnection shutdown() check sock and
sock.close()
02-16 11:21:59.010: DEBUG/TestHttpStack(2601): Abort Done!
02-16 11:22:28.674: INFO/System.out(2601): DefaultRequestDirector execute() catch exception:
null
02-16 11:22:28.674: WARN/System.err(2601): java.net.SocketTimeoutException
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.harmony.luni.net.PlainSocketImpl.read(PlainSocketImpl.java:564)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.harmony.luni.net.SocketInputStream.read(SocketInputStream.java:88)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:104)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:193)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:179)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:238)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:289)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:423)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
02-16 11:22:28.674: WARN/System.err(2601):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
02-16 11:22:28.690: WARN/System.err(2601):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
02-16 11:22:28.698: WARN/System.err(2601):     at com.mustardcy.test.httpstack.TestHttpStack.postRequest(TestHttpStack.java:258)
02-16 11:22:28.698: WARN/System.err(2601):     at com.mustardcy.test.httpstack.TestHttpStack.sendHttpRequest(TestHttpStack.java:160)
02-16 11:22:28.698: WARN/System.err(2601):     at com.mustardcy.test.httpstack.TestHttpStack.access$0(TestHttpStack.java:155)
02-16 11:22:28.698: WARN/System.err(2601):     at com.mustardcy.test.httpstack.TestHttpStack$SendHttpRequest.run(TestHttpStack.java:149)

The exception was caught 30s after when abort() was called.

I updated the code in DefaultClientConnection.opening(), DefaultClientConnection.shutdown()
and SocketHttpClientConnection.shutdown() to call sock.shutdownInput() before sock.close(),
and found the exception can be caught immediately after abort() is called.

I'm not sure whether the fix is correct. So I submitted a issue to get help.  And has the
latest HttpClient package fixed this issue?

Same issue is found in HttpPost.abort() case. My fix is let sock.shutdownOutput() called before
sock.close(). 

Thanks.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Mime
View raw message