@Override
        protected void initChannel(Channel ch) throws Exception {
          ch.config().setWriteBufferWaterMark(writeBufferWaterMark);
          ch.config().setAllocator(channelAllocator);
          ChannelPipeline pipeline = ch.pipeline();

          NettyServerRpcConnection conn = createNettyServerRpcConnection(ch);

          if (conf.getBoolean(HBASE_SERVER_NETTY_TLS_ENABLED, false)) {
            initSSL(pipeline, conn, conf.getBoolean(HBASE_SERVER_NETTY_TLS_SUPPORTPLAINTEXT, true));
          }
          pipeline
            .addLast(NettyRpcServerPreambleHandler.DECODER_NAME,
              NettyRpcServerPreambleHandler.createDecoder())
            .addLast(new NettyRpcServerPreambleHandler(NettyRpcServer.this, conn))
            // We need NettyRpcServerResponseEncoder here because NettyRpcServerPreambleHandler may
            // send RpcResponse to client.
            .addLast(NettyRpcServerResponseEncoder.NAME, new NettyRpcServerResponseEncoder(metrics))
            // Add writability handler after the response encoder, so we can abort writes before
            // they get encoded, if the fatal threshold is exceeded. We pass in suppliers here so
            // that the handler configs can be live updated via update_config.
            .addLast(NettyRpcServerChannelWritabilityHandler.NAME,
              new NettyRpcServerChannelWritabilityHandler(metrics, () -> writeBufferFatalThreshold,
                () -> isWritabilityBackpressureEnabled()));
        }
Fatal watermark for pending outbound bytes of a single netty channel. If the number of pending
outbound bytes exceeds this threshold, the connection will be forcibly closed so that memory
can be reclaimed. The client will have to re-establish a new connection and retry any in-flight
requests.
<p>
Note: must be higher than the high watermark, otherwise it's ignored.
hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/NettyRpcServer.java