@Override
  protected void putBlob(BlobProperties blobProperties, byte[] userMetadata, ReadableStreamChannel channel,
      PutBlobOptions options, FutureResult<String> futureResult, Callback<String> callback,
      QuotaChargeCallback quotaChargeCallback) {
    RouterException routerException = new RouterException("Illegal attempt to put blob through BackgroundDeleter",
        RouterErrorCode.UnexpectedInternalError);
    routerMetrics.operationDequeuingRate.mark();
    routerMetrics.onPutBlobError(routerException, blobProperties != null && blobProperties.isEncrypted(), false);
    nonBlockingRouter.completeOperation(futureResult, callback, null, routerException);
  }
Put operations are disallowed in the BackgroundDeleter.
ambry-router/src/main/java/com/github/ambry/router/OperationController.java