@Override
  public Future<String> putBlob(RestRequest restRequest, BlobProperties blobProperties, byte[] usermetadata, final ReadableStreamChannel channel,
      PutBlobOptions options, final Callback<String> callback, QuotaChargeCallback quotaChargeCallback) {
    logger.trace("Received putBlob call");
    final FutureResult<String> futureResult = new FutureResult<String>();
    if (!routerOpen) {
      completeOperation(futureResult, callback, null, ROUTER_CLOSED_EXCEPTION);
    } else {
      final long putConsumeStartTime = System.currentTimeMillis();
      channel.readInto(new NoOpAWC(), new Callback<Long>() {
        @Override
        public void onCompletion(Long result, Exception exception) {
          String operationResult = null;
          if (exception == null && (result == null || (channel.getSize() != -1 && result != channel.getSize()))) {
            exception = new IllegalStateException("The content was not completely read");
          } else if (exception == null) {
            logger.debug("Total bytes read - {}", result);
            perfRouterMetrics.putSizeInBytes.update(result);
            operationResult = PerfRouter.BLOB_ID;
          }
          perfRouterMetrics.putContentConsumeTimeInMs.update(System.currentTimeMillis() - putConsumeStartTime);
          completeOperation(futureResult, callback, operationResult, exception);
        }
      });
    }
    return futureResult;
  }
Consumes the data in {@code channel} and simply throws it away. {@code blobProperties} and {@code usermetadata} are
ignored.

@param restRequest    The {@link RestRequest} to put the blob.
@param blobProperties The properties of the blob.
@param usermetadata   Optional user metadata about the blob. This can be null.
@param channel        The {@link ReadableStreamChannel} that contains the content of the blob.
@param options        the {@link PutBlobOptions} for the blob.
@param callback       the {@link Callback} to invoke on operation completion.
@return a {@link Future} that will contain a (dummy) blob id.
ambry-tools/src/main/java/com/github/ambry/tools/perf/rest/PerfRouter.java