@Override
    protected PutRequest createPutRequest() {
      return new PutRequest(NonBlockingRouter.correlationIdGenerator.incrementAndGet(), routerConfig.routerHostname,
          chunkBlobId, finalBlobProperties, ByteBuffer.wrap(chunkUserMetadata), buf.retainedDuplicate(),
          buf.readableBytes(), BlobType.MetadataBlob,
          encryptedPerBlobKey != null ? encryptedPerBlobKey.duplicate() : null);
    }
{@inheritDoc}

In constructing the put request for the metadata blob, MetadataPutChunk serializes the metadata.
@return the created {@link PutRequest}.
ambry-router/src/main/java/com/github/ambry/router/PutOperation.java