@Override
  protected void channelRead0(ChannelHandlerContext ctx, FullHttpResponse msg) {
    ByteBuf dup = msg.content().retainedDuplicate();
    // Consume length
    dup.readLong();
    RequestInfo requestInfo = releaseAndCloseStreamChannel(ctx.channel());
    if (requestInfo != null) {
      // A request maybe just dropped by Http2NetworkClient.
      http2ClientMetrics.http2StreamFirstToAllFrameReadyTime.update(
          System.currentTimeMillis() - requestInfo.getResponseHeaderReceiveTime());
      ResponseInfo responseInfo = new ResponseInfo(requestInfo, null, dup);
      responseInfoQueue.put(responseInfo);
    } else {
      logger.info("Failed to get request from attribute map on channel {}, request maybe dropped", ctx.channel());
      dup.release();
    }
  }
Process {@link io.netty.handler.codec.http.FullHttpResponse} translated from HTTP/2 frames
ambry-network/src/main/java/com/github/ambry/network/http2/Http2ClientResponseHandler.java