[
https://issues.apache.org/jira/browse/HTTPASYNC-69?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13903259#comment-13903259
]
Yoram Dayagi commented on HTTPASYNC-69:
---------------------------------------
Hi Oleg,
No I don't...
How do I set it to 'completed'?
I tried calling cancel/failed/close right after calling ioctrl.shutdown() from
onByteReceived() (I extend AsyncByteConsumer), then
AsyncByteConsumer.onContentReceived() throws NullPointerException in the next
line after calling onByteReceived(): this.bbuf.clear();
This is because the methods cancel/failed/close release bbuf.
I tried to avoid this exception by doing the following, but the connection is
still not released:
1. Keep an internal flag that is set to true when the request is being canceled
(when calling ioctrl.shutdown())
2. Override isDone() as follows:
@Override
public boolean isDone() {
if (this.completed) {
return true;
}
return super.isDone();
}
Thanks,
Yoram
> calling IOControl.shutdown() doesn't release the underlying connection
> ----------------------------------------------------------------------
>
> Key: HTTPASYNC-69
> URL: https://issues.apache.org/jira/browse/HTTPASYNC-69
> Project: HttpComponents HttpAsyncClient
> Issue Type: Bug
> Affects Versions: 4.0 Final
> Environment: MacBook Pro, OSX
> Reporter: Yoram Dayagi
> Fix For: 4.0.1
>
>
> Below is the log of the following scenario:
> 1. Create an async client with MaxConnPerRoute=1
> 2. Start a request
> 3. Wait for 100ms and shutdown the channel (using ioctrl.shutdown)
> 4. Wait for 2000ms and start another request for same url
> 2014/02/17 12:34:15:587 IST [DEBUG] PoolingNHttpClientConnectionManager -
> Connection request: [route:
> {}->http://966b.http.dal05.cdn.softlayer.net:80][total kept alive: 0; route
> allocated: 0 of 1; total allocated: 0 of 10]
> 2014/02/17 12:34:15:681 IST [DEBUG] PoolingNHttpClientConnectionManager -
> Connection leased: [id: http-outgoing-0][route:
> {}->http://966b.http.dal05.cdn.softlayer.net:80][total kept alive: 0; route
> allocated: 1 of 1; total allocated: 1 of 10]
> 2014/02/17 12:34:15:689 IST [DEBUG] ManagedNHttpClientConnectionImpl -
> http-outgoing-0 10.0.0.2:58623<->93.184.221.133:80[ACTIVE][r:]: Set attribute
> http.nio.exchange-handler
> 2014/02/17 12:34:15:690 IST [DEBUG] ManagedNHttpClientConnectionImpl -
> http-outgoing-0 10.0.0.2:58623<->93.184.221.133:80[ACTIVE][rw:]: Event set [w]
> 2014/02/17 12:34:15:691 IST [DEBUG] ManagedNHttpClientConnectionImpl -
> http-outgoing-0 10.0.0.2:58623<->93.184.221.133:80[ACTIVE][rw:]: Set
> attribute http.nio.http-exchange-state
> 2014/02/17 12:34:15:692 IST [DEBUG] ManagedNHttpClientConnectionImpl -
> http-outgoing-0 10.0.0.2:58623<->93.184.221.133:80[ACTIVE][rw:]: Event set [w]
> 2014/02/17 12:34:15:694 IST [DEBUG] ManagedNHttpClientConnectionImpl -
> http-outgoing-0 10.0.0.2:58623<->93.184.221.133:80[ACTIVE][rw:w]: 246 bytes
> written
> 2014/02/17 12:34:15:694 IST [DEBUG] ManagedNHttpClientConnectionImpl -
> http-outgoing-0 10.0.0.2:58623<->93.184.221.133:80[ACTIVE][r:w]: Event
> cleared [w]
> 2014/02/17 12:34:15:770 IST [DEBUG] ManagedNHttpClientConnectionImpl -
> http-outgoing-0 10.0.0.2:58623<->93.184.221.133:80[ACTIVE][r:r]: 1360 bytes
> read
> 2014/02/17 12:34:15:775 IST [DEBUG] ManagedNHttpClientConnectionImpl -
> http-outgoing-0 10.0.0.2:58623<->93.184.221.133:80[ACTIVE][r:r]: Shutdown
> 2014/02/17 12:34:17:695 IST [DEBUG] PoolingNHttpClientConnectionManager -
> Connection request: [route:
> {}->http://966b.http.dal05.cdn.softlayer.net:80][total kept alive: 0; route
> allocated: 1 of 1; total allocated: 1 of 10]
>
> Note that the last log of “Connection request” reports that “route allocated:
> 1 of 1”.
> It probably means that the connection was not released when the channel was
> shut down.
> From the client perspective, the consumer’s onByteReceived is never called
> after this point.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]