    public void run() {
        while (!this.done) {
            synchronized (listLock) {
                LOG.trace("Iterating through decommissioned clients...");
                List<HttpClient> clientsToRemove = new ArrayList<HttpClient>();
                for (HttpClient client : clientList) {
                    String clientId = client.getParams().getParameter(CLIENT_INSTANCE_ID).toString();
                    if (userManager.hasUsers(clientId)) {
                        LOG.warn("Failed to shutdown connection pool client {} due to a connection still in " +
                                "use after last reconfiguration of Repose.", clientId);
                        break;
                    }
                    PoolingClientConnectionManager connMan = (PoolingClientConnectionManager) client.getConnectionManager();
                    PoolStats stats = connMan.getTotalStats();
                    if (stats.getLeased() == 0) {   
                        LOG.debug("Shutting down client {}", clientId);
                        connMan.shutdown();
                        clientsToRemove.add(client);
                    }
                }
                for(HttpClient client: clientsToRemove) {
                    clientList.remove(client);
                    LOG.info("HTTP connection pool {} has been destroyed.", client.getParams().getParameter(CLIENT_INSTANCE_ID));
                }
            }
            try {
                Thread.sleep(DEFAULT_INTERVAL);
            } catch (InterruptedException ex) {
               break;
            }
        }
        LOG.error("Shutting down decommissioner");
        Thread.currentThread().interrupt();
    }

    public void run() {
        while (!this.done) {
            synchronized (listLock) {
                LOG.trace("Iterating through decommissioned clients...");
                List<HttpClient> clientsToRemove = new ArrayList<HttpClient>();
                for (HttpClient client : clientList) {
                    String clientId = client.getParams().getParameter(CLIENT_INSTANCE_ID).toString();
                    if (userManager.hasUsers(clientId)) {
                        LOG.warn("Failed to shutdown connection pool client {} due to a connection still in " +
                                "use after last reconfiguration of Repose.", clientId);
                        break;
                    }
                    PoolingClientConnectionManager connMan = (PoolingClientConnectionManager) client.getConnectionManager();
                    PoolStats stats = connMan.getTotalStats();
                    if (stats.getLeased() == 0) {   
                        LOG.debug("Shutting down client {}", clientId);
                        connMan.shutdown();
                        clientsToRemove.add(client);
                    }
                }
                for(HttpClient client: clientsToRemove) {
                    clientList.remove(client);
                    LOG.info("HTTP connection pool {} has been destroyed.", client.getParams().getParameter(CLIENT_INSTANCE_ID));
                }
            }
            try {
                Thread.sleep(DEFAULT_INTERVAL);
            } catch (InterruptedException ex) {
               break;
            }
        }
        LOG.info("Shutting down HTTP Client Service Decommissioner");
        Thread.currentThread().interrupt();
    }
