Skip to content

byte[] input broken #239

@mjiderhamn

Description

@mjiderhamn

It appears using byte[] as Function input has been broken. Functions that previously executed properly, and still execute properly in local dev environment, now results in exception when run in Azure.

Investigative information

Please provide the following:

  • Timestamp: 2018-11-14 06:31:30.130 / 2018-11-14 06:32:12.900
  • Function App name: 50shadesofserverless
  • Function name(s) (as appropriate): transform / transformBlob (/transformStorageQueue)
  • Invocation ID: 9bc21c42-c7d0-4385-afc7-e7e4a5ea73fe / 89b5e2bc-006f-4397-a61f-eeabab9878ad
  • Region: EU North

Repro steps

  // Also tried Optional<byte[]> and HttpRequestMessage<Optional<byte[]>>
  @FunctionName("transform")
  public byte[] transform(
      @HttpTrigger(name = "req", methods = {POST}, authLevel = AuthorizationLevel.ANONYMOUS, dataType = "binary") byte[] request,
      final ExecutionContext context) {
    ...
  }

  @FunctionName("transformStorageQueue")
  @QueueOutput(name = "queueResult", queueName = "out", connection = "AzureWebJobsStorage")
  public byte[] transformQueue(
      @QueueTrigger(name = "input", dataType = "binary", queueName = "in", connection = "AzureWebJobsStorage") byte[] input,
      final ExecutionContext context) {
    ...
  }

  @FunctionName("transformBlob")
  @BlobOutput(name = "blobResult", path = "out/{name}", connection = "AzureWebJobsStorage")
  public byte[] transformBlob(
      @BlobTrigger(name = "content", dataType = "binary", path = "in/{name}", connection = "AzureWebJobsStorage") byte[] content,
      final ExecutionContext context) {
    ...
  }

Expected behavior

Functions triggered and executed.

Actual behavior

HTTP results in this exception:

Result: Failure
Exception: ClassCastException: com.microsoft.azure.functions.worker.binding.RpcHttpRequestDataSource cannot be cast to java.lang.String
Stack: java.lang.ClassCastException: com.microsoft.azure.functions.worker.binding.RpcHttpRequestDataSource cannot be cast to java.lang.String
	at com.microsoft.azure.functions.worker.binding.DataOperations.apply(DataOperations.java:91)
	at com.microsoft.azure.functions.worker.binding.DataSource.computeByType(DataSource.java:56)
	at com.microsoft.azure.functions.worker.binding.RpcHttpRequestDataSource.computeByType(RpcHttpRequestDataSource.java:20)
	at com.microsoft.azure.functions.worker.binding.DataSource.computeByName(DataSource.java:42)
	at com.microsoft.azure.functions.worker.binding.RpcHttpRequestDataSource.computeByName(RpcHttpRequestDataSource.java:20)
	at com.microsoft.azure.functions.worker.binding.BindingDataStore.getDataByName(BindingDataStore.java:50)
	at com.microsoft.azure.functions.worker.broker.ParameterResolver.resolve(ParameterResolver.java:59)
	at com.microsoft.azure.functions.worker.broker.ParameterResolver.resolve(ParameterResolver.java:42)
	at com.microsoft.azure.functions.worker.broker.JavaMethodExecutor.execute(JavaMethodExecutor.java:52)
	at com.microsoft.azure.functions.worker.broker.JavaFunctionBroker.invokeMethod(JavaFunctionBroker.java:51)
	at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:33)
	at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:10)
	at com.microsoft.azure.functions.worker.handler.MessageHandler.handle(MessageHandler.java:45)
...

Storage (blob and queue) result in:

Result: Failure
Exception: ClassCastException: [B cannot be cast to java.lang.String
Stack: java.lang.ClassCastException: [B cannot be cast to java.lang.String
	at com.microsoft.azure.functions.worker.binding.DataOperations.apply(DataOperations.java:91)
	at com.microsoft.azure.functions.worker.binding.DataSource.computeByType(DataSource.java:56)
	at com.microsoft.azure.functions.worker.binding.DataSource.computeByName(DataSource.java:42)
	at com.microsoft.azure.functions.worker.binding.BindingDataStore.getDataByName(BindingDataStore.java:50)
	at com.microsoft.azure.functions.worker.broker.ParameterResolver.resolve(ParameterResolver.java:59)
	at com.microsoft.azure.functions.worker.broker.ParameterResolver.resolve(ParameterResolver.java:42)
	at com.microsoft.azure.functions.worker.broker.JavaMethodExecutor.execute(JavaMethodExecutor.java:52)
	at com.microsoft.azure.functions.worker.broker.JavaFunctionBroker.invokeMethod(JavaFunctionBroker.java:51)
	at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:33)
	at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:10)
	at com.microsoft.azure.functions.worker.handler.MessageHandler.handle(MessageHandler.java:45)
...

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions