On Fri, 2014-11-21 at 21:00 +0000, Jaikit Savla wrote:
> Closing Idle and Expired connection is application only when stream
> associated with Connection is closed, otherwise connections are not
> considered idle. Looks like there is leak in connections at your side. Below
> code snippet shows one example on how to close the stream in a guaranteed
> fashion.
> HttpResponse response = httpClient.execute(httpGet);
> HttpEntity entity = response.getEntity(); String jsonString = null;
> try { InputStream instream = entity.getContent();
> /* do your processing with the stream */ } finally {
> EntityUtils.consumeQuietly(entity); }
> Jaikit
>
> On Friday, November 21, 2014 12:48 PM, Sam Perman <[email protected]>
> wrote:
>
>
Jaikit is absolutely right. This section of the HttpClient tutorial may
also be of help:
http://hc.apache.org/httpcomponents-client-ga/tutorial/html/fundamentals.html#d5e145
Oleg
> Hello
>
> We have had a persistent issue in production where after a few days our
> PoolingClientConnectionManager becomes unusable because there are no
> available connections. It turns out all of the available connections are
> “leased” (according to the PoolStats).
>
> I thought I was doing the right thing by writing an
> IdleConnectionManagerThread as recommended in the docs. This thread will
> call “closeExpiredConnections” and “closeIdleConnections” on a regular
> interval.
>
> Looking at the implementation of AbstractConnPool.closeExpired and
> AbstractConnPool.closeIdle I don’t understand how they work. In our case,
> all of our connections are “leased”… but these methods only ever iterate
> and close connections that are “available”. How do I clean up leased
> connections?
>
> Iterator<E> it = this.*available*.iterator();
> while (it.hasNext()) {
> E entry = it.next();
> if (entry.getUpdated() <= deadline) {
> entry.close();
> RouteSpecificPool<T, C, E> pool =
> getPool(entry.getRoute());
> pool.remove(entry);
> it.remove();
> notifyPending(pool);
> }
> }
>
> thanks
> sam
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]