@Override
    public void channelInactive(ChannelHandlerContext ctx) {
      logger.trace("Channel {} inactive", ctx.channel());
      ctx.close();
      if (isRunning) {
        perfClientMetrics.unexpectedDisconnectionError.inc();
        logger.info("Creating a new channel to keep up concurrency");
        bootstrap.connect().addListener(channelConnectListener);
      }
    }
Custom handler that sends out the request and receives and processes the response.
TODO support GET-after-POST and DELETE-after-POST operations for race condition testing.
ambry-tools/src/main/java/com/github/ambry/tools/perf/rest/NettyPerfClient.java