Azure/azure-functions-java-library

Azure-Functions broke Storage API

alwyna opened this issue ยท 13 comments

Expected: Be able to use azure-storage-blob Java API from azure function.
Actual: Azure function generates runtime error because of library mismatch.

Azure storage blob API does not work at all from inside azure functions due to netty conflict. To make matter worse, something along the chain uses a default static variable which makes shading impossible, without also impacting how it's being used by the functions.

When the library is used from a cli app, it works fine, but not when inside the Azure function context.

azure-functions-java-library 1.3.1 (current)
azure-storage-blob 12.4.0 (current)

Executed 'Functions.TestTimer' (Failed, Id=7055efb2-0332-403e-83f4-61364f20c4c3) [3/9/20 8:11:59 PM] System.Private.CoreLib: Exception while executing function: Functions.TestTimer. System.Private.CoreLib: Result: Failure [3/9/20 8:11:59 PM] Exception: NoSuchMethodError: io.netty.channel.SingleThreadEventLoop.<init>(Lio/netty/channel/EventLoopGroup;Ljava/util/concurrent/Executor;ZLjava/util/Queue;Ljava/util/Queue;Lio/netty/util/concurrent/RejectedExecutionHandler;)V [3/9/20 8:11:59 PM] Stack: java.lang.reflect.InvocationTargetException [3/9/20 8:11:59 PM] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [3/9/20 8:11:59 PM] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [3/9/20 8:11:59 PM] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [3/9/20 8:11:59 PM] at java.lang.reflect.Method.invoke(Method.java:498) [3/9/20 8:11:59 PM] at com.microsoft.azure.functions.worker.broker.JavaMethodInvokeInfo.invoke(JavaMethodInvokeInfo.java:22) [3/9/20 8:11:59 PM] at com.microsoft.azure.functions.worker.broker.JavaMethodExecutor.execute(JavaMethodExecutor.java:54) [3/9/20 8:11:59 PM] at com.microsoft.azure.functions.worker.broker.JavaFunctionBroker.invokeMethod(JavaFunctionBroker.java:53) [3/9/20 8:11:59 PM] at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:33) [3/9/20 8:11:59 PM] at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:10) [3/9/20 8:11:59 PM] at com.microsoft.azure.functions.worker.handler.MessageHandler.handle(MessageHandler.java:45) [3/9/20 8:11:59 PM] at com.microsoft.azure.functions.worker.JavaWorkerClient$StreamingMessagePeer.lambda$onNext$0(JavaWorkerClient.java:92) [3/9/20 8:11:59 PM] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [3/9/20 8:11:59 PM] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [3/9/20 8:11:59 PM] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [3/9/20 8:11:59 PM] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [3/9/20 8:11:59 PM] at java.lang.Thread.run(Thread.java:748) [3/9/20 8:11:59 PM] Caused by: java.lang.NoSuchMethodError: io.netty.channel.SingleThreadEventLoop.<init>(Lio/netty/channel/EventLoopGroup;Ljava/util/concurrent/Executor;ZLjava/util/Queue;Ljava/util/Queue;Lio/netty/util/concurrent/RejectedExecutionHandler;)V [3/9/20 8:11:59 PM] at io.netty.channel.epoll.EpollEventLoop.<init>(EpollEventLoop.java:87) [3/9/20 8:11:59 PM] at io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:143) [3/9/20 8:11:59 PM] at io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:35) [3/9/20 8:11:59 PM] at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84) [3/9/20 8:11:59 PM] at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58) [3/9/20 8:11:59 PM] at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47) [3/9/20 8:11:59 PM] at io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:59) [3/9/20 8:11:59 PM] at io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:104) [3/9/20 8:11:59 PM] at io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:91) [3/9/20 8:11:59 PM] at io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:68) [3/9/20 8:11:59 PM] at reactor.netty.resources.DefaultLoopEpoll.newEventLoopGroup(DefaultLoopEpoll.java:64) [3/9/20 8:11:59 PM] at reactor.netty.resources.DefaultLoopResources.cacheNativeServerLoops(DefaultLoopResources.java:234) [3/9/20 8:11:59 PM] at reactor.netty.resources.DefaultLoopResources.cacheNativeClientLoops(DefaultLoopResources.java:248) [3/9/20 8:11:59 PM] at reactor.netty.resources.DefaultLoopResources.onClient(DefaultLoopResources.java:184) [3/9/20 8:11:59 PM] at reactor.netty.tcp.TcpResources.onClient(TcpResources.java:179) [3/9/20 8:11:59 PM] at reactor.netty.http.client.HttpClientConnect$HttpTcpClient.connect(HttpClientConnect.java:134) [3/9/20 8:11:59 PM] at reactor.netty.tcp.TcpClientOperator.connect(TcpClientOperator.java:43) [3/9/20 8:11:59 PM] at reactor.netty.tcp.TcpClientOperator.connect(TcpClientOperator.java:43) [3/9/20 8:11:59 PM] at reactor.netty.tcp.TcpClientOperator.connect(TcpClientOperator.java:43) [3/9/20 8:11:59 PM] at reactor.netty.tcp.TcpClientOperator.connect(TcpClientOperator.java:43) [3/9/20 8:11:59 PM] at reactor.netty.tcp.TcpClientOperator.connect(TcpClientOperator.java:43) [3/9/20 8:11:59 PM] at reactor.netty.tcp.TcpClient.connect(TcpClient.java:187) [3/9/20 8:11:59 PM] at reactor.netty.http.client.HttpClientFinalizer.connect(HttpClientFinalizer.java:68) [3/9/20 8:11:59 PM] at reactor.netty.http.client.HttpClientFinalizer.responseConnection(HttpClientFinalizer.java:85) [3/9/20 8:11:59 PM] at com.azure.core.http.netty.NettyAsyncHttpClient.send(NettyAsyncHttpClient.java:72) [3/9/20 8:11:59 PM] at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:44) [3/9/20 8:11:59 PM] at com.azure.storage.common.policy.ScrubEtagPolicy.process(ScrubEtagPolicy.java:35) [3/9/20 8:11:59 PM] at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:46) [3/9/20 8:11:59 PM] at com.azure.core.http.policy.HttpLoggingPolicy.process(HttpLoggingPolicy.java:84) [3/9/20 8:11:59 PM] at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:46) [3/9/20 8:11:59 PM] at com.azure.storage.common.policy.ResponseValidationPolicyBuilder$ResponseValidationPolicy.process(ResponseValidationPolicyBuilder.java:77) [3/9/20 8:11:59 PM] at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:46) [3/9/20 8:11:59 PM] at com.azure.storage.common.policy.RequestRetryPolicy.attemptAsync(RequestRetryPolicy.java:114) [3/9/20 8:11:59 PM] at com.azure.storage.common.policy.RequestRetryPolicy.process(RequestRetryPolicy.java:48) [3/9/20 8:11:59 PM] at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:46) [3/9/20 8:11:59 PM] at com.azure.storage.common.policy.StorageSharedKeyCredentialPolicy.process(StorageSharedKeyCredentialPolicy.java:41) [3/9/20 8:11:59 PM] at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:46) [3/9/20 8:11:59 PM] at com.azure.core.http.policy.AddDatePolicy.lambda$process$0(AddDatePolicy.java:29) [3/9/20 8:11:59 PM] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:44) [3/9/20 8:11:59 PM] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) [3/9/20 8:11:59 PM] at reactor.core.publisher.Mono.subscribe(Mono.java:4087) [3/9/20 8:11:59 PM] at reactor.core.publisher.Mono.block(Mono.java:1662) [3/9/20 8:11:59 PM] at com.azure.storage.common.implementation.StorageImplUtils.blockWithOptionalTimeout(StorageImplUtils.java:99) [3/9/20 8:11:59 PM] at com.azure.storage.blob.BlobContainerClient.existsWithResponse(BlobContainerClient.java:195) [3/9/20 8:11:59 PM] at com.azure.storage.blob.BlobContainerClient.exists(BlobContainerClient.java:179)

Have the same issue with azure-functions-java-library 1.3.1 and azure-storage-blob 12.5.0

Seeing the same with com.microsoft.azure.functions:azure-functions-java-library:1.3.1 and com.azure:azure-security-keyvault-secrets:4.1.0.

gkh70 commented

Same issue with CLI app.
azure-functions-java-library:1.3.1
azure-servicebus:3.1.2
azure-storage-blob:12.3.0
azure-documentdb:2.4.7

following stacktrace when calling upload method of com.azure.storage.blob.BlockBlobClient class:

[2020-03-30 5:24:53 PM] System.Private.CoreLib: Exception while executing function: Functions.pim-ingestion-function. System.Private.CoreLib: Result: Failure
[2020-03-30 5:24:53 PM] Exception: NoSuchMethodError: io.netty.channel.SingleThreadEventLoop.(Lio/netty/channel/EventLoopGroup;Ljava/util/concurrent/Executor;ZLjava/util/Queue;Ljava/util/Queue;Lio/netty/util/concurrent/RejectedExecutionHandler;)V
[2020-03-30 5:24:53 PM] Stack: java.lang.reflect.InvocationTargetException
[2020-03-30 5:24:53 PM] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2020-03-30 5:24:53 PM] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[2020-03-30 5:24:53 PM] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[2020-03-30 5:24:53 PM] at java.lang.reflect.Method.invoke(Method.java:498)
[2020-03-30 5:24:53 PM] at com.microsoft.azure.functions.worker.broker.JavaMethodInvokeInfo.invoke(JavaMethodInvokeInfo.java:22)
[2020-03-30 5:24:53 PM] at com.microsoft.azure.functions.worker.broker.JavaMethodExecutor.execute(JavaMethodExecutor.java:54)
[2020-03-30 5:24:53 PM] at com.microsoft.azure.functions.worker.broker.JavaFunctionBroker.invokeMethod(JavaFunctionBroker.java:53)
[2020-03-30 5:24:53 PM] at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:33)
[2020-03-30 5:24:53 PM] at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:10)
[2020-03-30 5:24:53 PM] at com.microsoft.azure.functions.worker.handler.MessageHandler.handle(MessageHandler.java:45)
[2020-03-30 5:24:53 PM] at com.microsoft.azure.functions.worker.JavaWorkerClient$StreamingMessagePeer.lambda$onNext$0(JavaWorkerClient.java:92)
[2020-03-30 5:24:53 PM] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[2020-03-30 5:24:53 PM] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[2020-03-30 5:24:53 PM] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[2020-03-30 5:24:53 PM] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[2020-03-30 5:24:53 PM] at java.lang.Thread.run(Thread.java:748)
[2020-03-30 5:24:53 PM] Caused by: java.lang.NoSuchMethodError: io.netty.channel.SingleThreadEventLoop.(Lio/netty/channel/EventLoopGroup;Ljava/util/concurrent/Executor;ZLjava/util/Queue;Ljava/util/Queue;Lio/netty/util/concurrent/RejectedExecutionHandler;)V
[2020-03-30 5:24:53 PM] at io.netty.channel.kqueue.KQueueEventLoop.(KQueueEventLoop.java:77)
[2020-03-30 5:24:53 PM] at io.netty.channel.kqueue.KQueueEventLoopGroup.newChild(KQueueEventLoopGroup.java:143)
[2020-03-30 5:24:53 PM] at io.netty.channel.kqueue.KQueueEventLoopGroup.newChild(KQueueEventLoopGroup.java:32)
[2020-03-30 5:24:53 PM] at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:84)
[2020-03-30 5:24:53 PM] at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:58)
[2020-03-30 5:24:53 PM] at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:47)
[2020-03-30 5:24:53 PM] at io.netty.channel.MultithreadEventLoopGroup.(MultithreadEventLoopGroup.java:59)
[2020-03-30 5:24:53 PM] at io.netty.channel.kqueue.KQueueEventLoopGroup.(KQueueEventLoopGroup.java:102)
[2020-03-30 5:24:53 PM] at io.netty.channel.kqueue.KQueueEventLoopGroup.(KQueueEventLoopGroup.java:89)
[2020-03-30 5:24:53 PM] at io.netty.channel.kqueue.KQueueEventLoopGroup.(KQueueEventLoopGroup.java:65)
[2020-03-30 5:24:53 PM] at reactor.netty.resources.DefaultLoopKQueue.newEventLoopGroup(DefaultLoopKQueue.java:64)
[2020-03-30 5:24:53 PM] at reactor.netty.resources.DefaultLoopResources.cacheNativeServerLoops(DefaultLoopResources.java:234)
[2020-03-30 5:24:53 PM] at reactor.netty.resources.DefaultLoopResources.cacheNativeClientLoops(DefaultLoopResources.java:248)
[2020-03-30 5:24:53 PM] at reactor.netty.resources.DefaultLoopResources.onClient(DefaultLoopResources.java:184)
[2020-03-30 5:24:53 PM] at reactor.netty.tcp.TcpResources.onClient(TcpResources.java:179)
[2020-03-30 5:24:53 PM] at reactor.netty.http.client.HttpClientConnect$HttpTcpClient.connect(HttpClientConnect.java:134)
[2020-03-30 5:24:53 PM] at reactor.netty.tcp.TcpClientOperator.connect(TcpClientOperator.java:43)
[2020-03-30 5:24:53 PM] at reactor.netty.tcp.TcpClientOperator.connect(TcpClientOperator.java:43)
[2020-03-30 5:24:53 PM] at reactor.netty.tcp.TcpClientOperator.connect(TcpClientOperator.java:43)
[2020-03-30 5:24:53 PM] at reactor.netty.tcp.TcpClientOperator.connect(TcpClientOperator.java:43)
[2020-03-30 5:24:53 PM] at reactor.netty.tcp.TcpClientOperator.connect(TcpClientOperator.java:43)
[2020-03-30 5:24:53 PM] at reactor.netty.tcp.TcpClient.connect(TcpClient.java:187)
[2020-03-30 5:24:53 PM] at reactor.netty.http.client.HttpClientFinalizer.connect(HttpClientFinalizer.java:68)
[2020-03-30 5:24:53 PM] at reactor.netty.http.client.HttpClientFinalizer.responseConnection(HttpClientFinalizer.java:85)
[2020-03-30 5:24:53 PM] at com.azure.core.http.netty.NettyAsyncHttpClient.send(NettyAsyncHttpClient.java:70)
[2020-03-30 5:24:53 PM] at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:44)
[2020-03-30 5:24:53 PM] at com.azure.storage.common.policy.ScrubEtagPolicy.process(ScrubEtagPolicy.java:35)
[2020-03-30 5:24:53 PM] at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:46)
[2020-03-30 5:24:53 PM] at com.azure.core.http.policy.HttpLoggingPolicy.process(HttpLoggingPolicy.java:84)
[2020-03-30 5:24:53 PM] at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:46)
[2020-03-30 5:24:53 PM] at com.azure.storage.common.policy.ResponseValidationPolicyBuilder$ResponseValidationPolicy.process(ResponseValidationPolicyBuilder.java:77)
[2020-03-30 5:24:53 PM] at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:46)
[2020-03-30 5:24:53 PM] at com.azure.storage.common.policy.RequestRetryPolicy.attemptAsync(RequestRetryPolicy.java:114)
[2020-03-30 5:24:53 PM] at com.azure.storage.common.policy.RequestRetryPolicy.process(RequestRetryPolicy.java:48)
[2020-03-30 5:24:53 PM] at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:46)
[2020-03-30 5:24:53 PM] at com.azure.storage.common.policy.StorageSharedKeyCredentialPolicy.process(StorageSharedKeyCredentialPolicy.java:41)
[2020-03-30 5:24:53 PM] at com.azure.core.http.HttpPipelineNextPolicy.process(HttpPipelineNextPolicy.java:46)
[2020-03-30 5:24:53 PM] at com.azure.core.http.policy.AddDatePolicy.lambda$process$0(AddDatePolicy.java:29)
[2020-03-30 5:24:53 PM] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:44)
[2020-03-30 5:24:53 PM] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
[2020-03-30 5:24:53 PM] at reactor.core.publisher.Mono.subscribe(Mono.java:4087)
[2020-03-30 5:24:53 PM] at reactor.core.publisher.Mono.block(Mono.java:1662)
[2020-03-30 5:24:53 PM] at com.azure.storage.common.implementation.StorageImplUtils.blockWithOptionalTimeout(StorageImplUtils.java:95)
[2020-03-30 5:24:53 PM] at com.azure.storage.blob.specialized.BlockBlobClient.uploadWithResponse(BlockBlobClient.java:236)
[2020-03-30 5:24:53 PM] at com.azure.storage.blob.specialized.BlockBlobClient.upload(BlockBlobClient.java:188)
[2020-03-30 5:24:53 PM] at com.azure.storage.blob.specialized.BlockBlobClient.upload(BlockBlobClient.java:162)

same issue with visual studio code
azure-functions-java-library 1.3.1
azure-storage-blob 12.6.0

...
[2020. 4. 16. ์˜ค์ „ 7:37:13] 400 [parallel-1] DEBUG reactor.netty.resources.DefaultLoopEpoll - Default Epoll support : true
[2020. 4. 16. ์˜ค์ „ 7:37:13] 401 [parallel-1] DEBUG reactor.netty.resources.DefaultLoopKQueue - Default KQueue support : false
[2020. 4. 16. ์˜ค์ „ 7:37:13] 406 [parallel-1] ERROR reactor.core.scheduler.Schedulers - Scheduler worker in group main failed with an uncaught exception
[2020. 4. 16. ์˜ค์ „ 7:37:13] java.lang.NoSuchMethodError: io.netty.channel.SingleThreadEventLoop.(Lio/netty/channel/EventLoopGroup;Ljava/util/concurrent/Executor;ZLjava/util/Queue;Ljava/util/Queue;Lio/netty/util/concurrent/RejectedExecutionHandler;)V
[2020. 4. 16. ์˜ค์ „ 7:37:13] at io.netty.channel.epoll.EpollEventLoop.(EpollEventLoop.java:90)
[2020. 4. 16. ์˜ค์ „ 7:37:13] at io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:151)
[2020. 4. 16. ์˜ค์ „ 7:37:13] at io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:35)
[2020. 4. 16. ์˜ค์ „ 7:37:13] at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:84)
[2020. 4. 16. ์˜ค์ „ 7:37:13] at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:58)
[2020. 4. 16. ์˜ค์ „ 7:37:13] at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:47)
[2020. 4. 16. ์˜ค์ „ 7:37:13] at io.netty.channel.MultithreadEventLoopGroup.(MultithreadEventLoopGroup.java:59)
[2020. 4. 16. ์˜ค์ „ 7:37:13] at io.netty.channel.epoll.EpollEventLoopGroup.(EpollEventLoopGroup.java:112)
[2020. 4. 16. ์˜ค์ „ 7:37:13] at io.netty.channel.epoll.EpollEventLoopGroup.(EpollEventLoopGroup.java:99)
[2020. 4. 16. ์˜ค์ „ 7:37:13] at io.netty.channel.epoll.EpollEventLoopGroup.(EpollEventLoopGroup.java:76)
[2020. 4. 16. ์˜ค์ „ 7:37:13] at reactor.netty.resources.DefaultLoopEpoll.newEventLoopGroup(DefaultLoopEpoll.java:64)
...

I'm seeing the same thing, but I only started seeing it when I deployed the Function in a premium plan instead of in the Consumption plan.

as a workaround, you can exclude the Epoll dependency

<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-core-http-netty</artifactId>
<version>{put-version-here}</version>
<exclusions>
    <exclusion>
        <groupId>io.netty</groupId>
        <artifactId>netty-transport-native-epoll</artifactId>
    </exclusion>
    <exclusion>
        <groupId>io.netty</groupId>
        <artifactId>netty-transport-native-unix-common</artifactId>
    </exclusion>
</exclusions>
</dependency>

Hi all - I've just given the "netty depency"-approach described above a try, but unfortunately I get an exception:
Exception has occurred: java.lang.NoClassDefFoundError "java.lang.NoClassDefFoundError: Could not initialize class reactor.netty.http.client.HttpClientSecure"
error

@tedescomicchidev - In my case exclusion worked on "Linux + azure-functions-core-tools-3". Note that this was on dev env, details of env is here. I didn't try deploying to a real Function plan :(

From the error, it looks like you're running into the same issue Azure/azure-functions-java-worker#365, this issue is due to the version conflict between the netty version GRPC brings vs the one Azure SDK depends on.

We still have the same issue with a function trying to retrieve storage blobs, using:
azure-functions-java-library 1.3.1
azure-storage-blob 12.6.1

When can we expect a fix to the functions java lib?

Related issue from the Azure Functions team - Azure/azure-functions-java-worker#381

The issue fix Azure/azure-functions-java-worker#381 has been released.

Please can you check if you still have the same issue?

The issue should be fixed Please let us know if you still face the same issue.

this issue not fixed, the same error continue occurring blob-storage azure-storage-blob:12.13.0, any new about it?