title: Apache PoolingHttpClientConnectionManager throwing illegal state exception
body: <p>Here is how I use it - </p>
  
  <pre><code>private static final PoolingHttpClientConnectionManager connPool;
  
  static {
  
          connPool = new PoolingHttpClientConnectionManager();
          // Increase max total connection to 200
          connPool.setMaxTotal(200);//configurable through app.properties
          // Increase default max connection per route to 50
          connPool.setDefaultMaxPerRoute(20);//configurable through app.properties
  
  }
  
  CloseableHttpClient httpClient = HttpClients.custom()
                  .setConnectionManager(connPool) .build();
  </code></pre>
  
  <p>ALso I have put a finally block around http GET - </p>
  
  <pre><code>finally {
              try {
                  httpClient.close();
              } catch (IOException e) {
                  LOGGER.error(e.getMessage());   
              }
          }
  </code></pre>
  
  <p>Here is my stacktrace - </p>
  
  <pre><code>java.lang.IllegalStateException: Connection pool shut down
      at org.apache.http.util.Asserts.check(Asserts.java:34)
      at org.apache.http.pool.AbstractConnPool.lease(AbstractConnPool.java:169)
      at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.requestConnection(PoolingHttpClientConnectionManager.java:217)
      at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:157)
      at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:194)
      at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:85)
      at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
      at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
      at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
      at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
      at com.A.B.C.CustomHttpClient.doGETAndValidate(CustomHttpClient.java:44)
      at com.A.B.C.SiteMonitorTask.monitorAndUpdateEndPoints(SiteMonitorTask.java:48)
      at com.A.B.C.SiteMonitorTask.run(SiteMonitorTask.java:37)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at java.lang.Thread.run(Thread.java:744)
  </code></pre>
  
  <p>I am using Quartz to schedule a job of monitoring Http end points.. Here is my connection pool configuration </p>
  
  <pre><code>totalMaxHttpConn=200
  maxHttpConnPerRoute=20
  </code></pre>
  
  <p>Maven dependency.. artifact version </p>
  
  <pre><code>httpclient 4.3.1
  httpcore 4.3.1
  </code></pre>
  
  <p><strong>EDIT</strong> - Well the problem got away by not closing CloseableHttpClient in the finally block.. Can anyone tell why is it behaving like that? <strong>Why is connection pool shut down if i close a client?</strong></p>
  
  <p><strong>Is the closeablehttpclient above is a handle to the pool rather than a single conn</strong></p>