@Override
  protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest msg) {
    ByteBuf dup = msg.content().retainedDuplicate();
    NettyServerRequest networkRequest = new NettyServerRequest(ctx, dup);
    try {
      discardHeaderBytes(networkRequest);
      requestResponseChannel.sendRequest(networkRequest);
    } catch (InterruptedException e) {
      dup.release();
      http2ServerMetrics.requestResponseChannelErrorCount.inc();
      logger.warn("Can't send NettyServerRequest to requestResponseChannel. Cause: ", e);
    } catch (IOException e) {
      logger.error("Encountered an error while reading length out of request {}, close the connection {}",
          networkRequest, ctx.channel(), e);
      ctx.channel().close();
      networkRequest.release();
    }
  }
Retain content of {@link FullHttpRequest} and send to {@link RequestResponseChannel}.
ambry-network/src/main/java/com/github/ambry/network/http2/AmbryNetworkRequestHandler.java