I am facing a problem with HttpClient (version 4.5.2) in a web application, I 
mean, in a multi-threaded way. In normal situation, when a connection request 
is arrived, a connection is leased from the pool, then used and finally 
released back to the pool again to be used in future requests again as the 
following part of log for connection with id 673890 states .
-------------------------------------------------------------
15 Feb 2017 018:25:54:115 p-1-thread-121 DEBUG 
PoolingHttpClientConnectionManager:249 - Connection request: [route: 
{}->http://127.0.0.1:8080][total kept alive: 51; route allocated: 4 of 100; 
total allocated: 92 of 500]
15 Feb 2017 018:25:54:116 p-1-thread-121 DEBUG 
PoolingHttpClientConnectionManager:282 - Connection leased: [id: 673890][route: 
{}->http://127.0.0.1:8080][total kept alive: 51; route allocated: 4 of 100; 
total allocated: 92 of 500]
15 Feb 2017 018:25:54:116 p-1-thread-121 DEBUG 
DefaultManagedHttpClientConnection:90 - http-outgoing-673890: set socket 
timeout to 9000
15 Feb 2017 018:25:54:120 p-1-thread-121 DEBUG 
PoolingHttpClientConnectionManager:314 - Connection [id: 673890][route: 
{}->http://127.0.0.1:8080] can be kept alive for 10.0 seconds
15 Feb 2017 018:25:54:121 p-1-thread-121 DEBUG 
PoolingHttpClientConnectionManager:320 - Connection released: [id: 
673890][route: {}->http://127.0.0.1:8080][total kept alive: 55; route 
allocated: 4 of 100; total allocated: 92 of 500]
-------------------------------------------------------------
After using the mentioned connection (id 673890) several times in a normal way 
which I mentioned above, I notice the following happens in the code:
-------------------------------------------------------------
15 Feb 2017 018:25:54:130 p-1-thread-126 DEBUG 
PoolingHttpClientConnectionManager:249 - Connection request: [route: 
{}->http://127.0.0.1:8080][total kept alive: 55; route allocated: 4 of 100; 
total allocated: 92 of 500]
15 Feb 2017 018:25:54:130 p-1-thread-126 DEBUG 
PoolingHttpClientConnectionManager:282 - Connection leased: [id: 673890][route: 
{}->http://127.0.0.1:8080][total kept alive: 54; route allocated: 4 of 100; 
total allocated: 92 of 500]
15 Feb 2017 018:25:54:131 p-1-thread-126 DEBUG 
DefaultManagedHttpClientConnection:90 - http-outgoing-673890: set socket 
timeout to 9000
15 Feb 2017 018:25:54:133 p-1-thread-126 DEBUG 
DefaultManagedHttpClientConnection:81 - http-outgoing-673890: Close connection
15 Feb 2017 018:25:54:133 p-1-thread-126 DEBUG 
PoolingHttpClientConnectionManager:320 - Connection released: [id: 
673890][route: {}->http://127.0.0.1:8080][total kept alive: 55; route 
allocated: 3 of 100; total allocated: 91 of 500]
-------------------------------------------------------------
The log says that the connection is requested, leased, used, closed and then 
released back to the pool. So, my question is that why the connection is 
closed? And why it is released to the pool after closing?

I know that the connection could be closed by the server, but that is a 
different situation. In that case, the connection is leased from the pool, 
determined as stale, so a new connection is established and used but the log I 
presented above shows a different behavior.

I am aware of two reasons for connection close in HttpClient. First, closed for 
being idle because their KeepAliveTime is expired. Second, closed by the server 
which makes the connection stale in the pool. Is there any other reason for 
connections to be closed?

Regards,
Ferez
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
For additional commands, e-mail: httpclient-users-h...@hc.apache.org

Reply via email to