-
Notifications
You must be signed in to change notification settings - Fork 66
Closed
Description
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)
...