@Override
  public Future<String> stitchBlob(BlobProperties blobProperties, byte[] userMetadata, List<ChunkInfo> chunksToStitch,
      PutBlobOptions options, Callback<String> callback, QuotaChargeCallback quotaChargeCallback) {
    logger.trace("Received stitchBlob call");
    final FutureResult<String> futureResult = new FutureResult<>();
    if (!routerOpen) {
      completeOperation(futureResult, callback, null, ROUTER_CLOSED_EXCEPTION);
    } else {
      completeOperation(futureResult, callback, BLOB_ID, null);
    }
    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