Hello,
I have a class using Fusion API.
I do http calls using
com.google.api.client.http.HttpRequest.execute(); I am using
httpclient 4.0.3
From my tests it is evident that when HttpResponseException occurs,
the http connection is not released properly.
This happens even though I always consume the content, via ignore().
So after 2 exceptions occur, the pool times out waiting for a
connection.
Here's a snippet of the log:
------------------------
DEBUG - hreadSafeClientConnManager - Get connection: HttpRoute[{}-
>
http://www.google.com], timeout = 20000
DEBUG - ConnPoolByRoute - [HttpRoute[{}->http://
www.google.com]] kept alive: 1, issued: 2, allocated: 3 out of 20
DEBUG - ConnPoolByRoute - No free connections [HttpRoute[{}-
>
http://www.google.com]][null]
DEBUG - ConnPoolByRoute - Available capacity: 0 out of 2
[HttpRoute[{}->
http://www.google.com]][null]
DEBUG - ConnPoolByRoute - Need to wait for connection
[HttpRoute[{}->
http://www.google.com]][null]
DEBUG - FusionTablesAccessor - Failed executing the http request
to Google Fusion
org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting
for connection
at
org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolByRoute.java:
348)
at org.apache.http.impl.conn.tsccm.ConnPoolByRoute
$1.getPoolEntry(ConnPoolByRoute.java:228)
at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager
$1.getConnection(ThreadSafeClientConnManager.java:171)
at
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:
390)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:
641)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:
576)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:
554)
at
com.google.api.client.apache.ApacheHttpRequest.execute(ApacheHttpRequest.java:
47)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:
207)
[...]