Class HealthCheckedChannelPool

  • All Implemented Interfaces:
    io.netty.channel.pool.ChannelPool, Closeable, AutoCloseable, SdkChannelPool

    public class HealthCheckedChannelPool
    extends Object
    implements SdkChannelPool
    An implementation of ChannelPool that validates the health of its connections. This wraps another ChannelPool, and verifies:
    1. All connections acquired from the underlying channel pool are in the active state.
    2. All connections released into the underlying pool that are not active, are closed before they are released.
    Acquisitions that fail due to an unhealthy underlying channel are retried until a healthy channel can be returned, or the NettyConfiguration.connectionAcquireTimeoutMillis() timeout is reached.
    • Constructor Detail

      • HealthCheckedChannelPool

        public HealthCheckedChannelPool​(io.netty.channel.EventLoopGroup eventLoopGroup,
                                        NettyConfiguration configuration,
                                        SdkChannelPool delegate)
    • Method Detail

      • acquire

        public io.netty.util.concurrent.Future<io.netty.channel.Channel> acquire()
        Specified by:
        acquire in interface io.netty.channel.pool.ChannelPool
      • acquire

        public io.netty.util.concurrent.Future<io.netty.channel.Channel> acquire​(io.netty.util.concurrent.Promise<io.netty.channel.Channel> resultFuture)
        Specified by:
        acquire in interface io.netty.channel.pool.ChannelPool
      • release

        public io.netty.util.concurrent.Future<Void> release​(io.netty.channel.Channel channel)
        Specified by:
        release in interface io.netty.channel.pool.ChannelPool
      • release

        public io.netty.util.concurrent.Future<Void> release​(io.netty.channel.Channel channel,
                                                             io.netty.util.concurrent.Promise<Void> promise)
        Specified by:
        release in interface io.netty.channel.pool.ChannelPool
      • close

        public void close()
        Specified by:
        close in interface AutoCloseable
        Specified by:
        close in interface io.netty.channel.pool.ChannelPool
        Specified by:
        close in interface Closeable
      • collectChannelPoolMetrics

        public CompletableFuture<Void> collectChannelPoolMetrics​(MetricCollector metrics)
        Description copied from interface: SdkChannelPool
        Collect channel pool metrics into the provided MetricCollector collection, completing the returned future when all metric publishing is complete.
        Specified by:
        collectChannelPoolMetrics in interface SdkChannelPool
        Parameters:
        metrics - The collection to which all metrics should be added.
        Returns:
        A future that is completed when all metric publishing is complete.