protected IConnectionPool createConnectionPool(
            DiscoveryResult discoveryResult,
            SocketAddress serverAddr,
            NettyClientConnectionFactory clientConnFactory,
            PooledConnectionFactory pcf,
            ConnectionPoolConfig connPoolConfig,
            IClientConfig clientConfig,
            Counter createNewConnCounter,
            Counter createConnSucceededCounter,
            Counter createConnFailedCounter,
            Counter requestConnCounter,
            Counter reuseConnCounter,
            Counter connTakenFromPoolIsNotOpen,
            Counter closeAbovePoolHighWaterMarkCounter,
            Counter maxConnsPerHostExceededCounter,
            PercentileTimer connEstablishTimer,
            AtomicInteger connsInPool,
            AtomicInteger connsInUse) {
        return new PerServerConnectionPool(
                discoveryResult,
                serverAddr,
                clientConnFactory,
                pcf,
                connPoolConfig,
                clientConfig,
                createNewConnCounter,
                createConnSucceededCounter,
                createConnFailedCounter,
                requestConnCounter,
                reuseConnCounter,
                connTakenFromPoolIsNotOpen,
                closeAbovePoolHighWaterMarkCounter,
                maxConnsPerHostExceededCounter,
                connEstablishTimer,
                connsInPool,
                connsInUse);
    }
Gracefully shuts down a DefaultClientChannelManager by allowing in-flight requests to finish before closing the connections.
Idle connections in the connection pools are closed, and any connections associated with an in-flight request
will be closed upon trying to return the connection to the pool
zuul-core/src/main/java/com/netflix/zuul/netty/connectionpool/DefaultClientChannelManager.java