cloudevents/sdk-java

[restful-ws] Doesn't work with Quarkus Reactive in Native mode

cardil opened this issue · 9 comments

cardil commented

The library works well with Quarkus RESTEasy Reactive. Also, the Reactive REST Client works. But, in Native mode the app throws:

2023-04-11 20:02:52,028 INFO  [org.ecl.jet.uti.log] (pool-2-thread-1) Logging initialized @3197ms to org.eclipse.jetty.util.log.Slf4jLog
2023-04-11 20:02:52,388 INFO  [org.ecl.jet.ser.Server] (pool-2-thread-1) jetty-9.4.49.v20220914; built: 2022-09-14T01:07:36.601Z; git: 4231a3b2e4cb8548a412a789936d640a97b1aa0a; jvm 17.0.5+8
2023-04-11 20:02:52,411 INFO  [org.ecl.jet.ser.han.ContextHandler] (pool-2-thread-1) Started o.e.j.s.ServletContextHandler@4a9f17bd{/__admin,null,AVAILABLE}
2023-04-11 20:02:52,432 INFO  [org.ecl.jet.ser.han.Con.ROOT] (pool-2-thread-1) RequestHandlerClass from context returned com.github.tomakehurst.wiremock.http.StubRequestHandler. Normalized mapped under returned 'null'
2023-04-11 20:02:52,433 INFO  [org.ecl.jet.ser.han.ContextHandler] (pool-2-thread-1) Started o.e.j.s.ServletContextHandler@74a8659d{/,null,AVAILABLE}
2023-04-11 20:02:52,455 INFO  [org.ecl.jet.ser.AbstractConnector] (pool-2-thread-1) Started NetworkTrafficServerConnector@3d916fd4{HTTP/1.1, (http/1.1, h2c)}{0.0.0.0:34467}
2023-04-11 20:02:52,455 INFO  [org.ecl.jet.ser.Server] (pool-2-thread-1) Started @3630ms
======================================================================================
  native.image.path was not set, making a guess for the correct path of native image
  guessed path: /home/ksuszyns/git/openshift-knative-showcase/quarkus/target/knative-showcase-v0.6.0-15-g5a4a52a-runner
======================================================================================
Executing "/home/ksuszyns/git/openshift-knative-showcase/quarkus/target/knative-showcase-v0.6.0-15-g5a4a52a-runner -Dquarkus.http.port=8081 -Dquarkus.http.ssl-port=8444 -Dtest.url=http://localhost:8081 -Dquarkus.log.file.path=/home/ksuszyns/git/openshift-knative-showcase/quarkus/target/quarkus.log -Dquarkus.log.file.enable=true -Dk.sink=http://localhost:34467"
__  ____  __  _____   ___  __ ____  ______ 
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ 
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/   
2023-04-11 20:02:52,641 INFO  [io.quarkus] (main) knative-showcase v0.6.0-15-g5a4a52a native (powered by Quarkus 2.13.5.Final-redhat-00003) started in 0.061s. Listening on: http://0.0.0.0:8081
2023-04-11 20:02:52,642 INFO  [io.quarkus] (main) Profile prod activated. 
2023-04-11 20:02:52,642 INFO  [io.quarkus] (main) Installed features: [cdi, hibernate-validator, kubernetes, opentelemetry, qute, rest-client-reactive, rest-client-reactive-jackson, resteasy-reactive, resteasy-reactive-jackson, resteasy-reactive-qute, smallrye-context-propagation, smallrye-health, smallrye-metrics, smallrye-openapi, vertx]
2023-04-11 20:02:52,726 WARN  [org.jbo.res.mic.cli.RestClientBuilderImpl] (main) CDI container is not available
2023-04-11 20:02:53,082 WARN  [org.jbo.res.mic.cli.RestClientBuilderImpl] (main) CDI container is not available
2023-04-11 20:02:53,189 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "POST /events HTTP/1.1[\r][\n]"
2023-04-11 20:02:53,189 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "Accept: application/json[\r][\n]"
2023-04-11 20:02:53,190 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "ce-id: 123456[\r][\n]"
2023-04-11 20:02:53,190 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "ce-source: http://localhost[\r][\n]"
2023-04-11 20:02:53,190 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "ce-specversion: 1.0[\r][\n]"
2023-04-11 20:02:53,190 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "ce-type: test[\r][\n]"
2023-04-11 20:02:53,190 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "Content-Type: text/plain[\r][\n]"
2023-04-11 20:02:53,190 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "Content-Length: 13[\r][\n]"
2023-04-11 20:02:53,190 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "Host: localhost:8081[\r][\n]"
2023-04-11 20:02:53,191 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"
2023-04-11 20:02:53,191 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "User-Agent: Apache-HttpClient/4.5.13.redhat-00002 (Java/17.0.5)[\r][\n]"
2023-04-11 20:02:53,191 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "[\r][\n]"
2023-04-11 20:02:53,191 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 >> "Hello, World!"
2023-04-11 20:02:53,193 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-0) HTTP Request to /events failed, error id: e96c15cb-fb8a-49a6-ba90-c6d850092151-1: java.lang.RuntimeException: java.lang.NoSuchMethodException: com.redhat.openshift.knative.showcase.events.Rest.receive(io.cloudevents.CloudEvent)
	at org.jboss.resteasy.reactive.server.spi.ResteasyReactiveResourceInfo.getMethod(ResteasyReactiveResourceInfo.java:72)
	at org.jboss.resteasy.reactive.server.spi.ResteasyReactiveResourceInfo.getParameterAnnotations(ResteasyReactiveResourceInfo.java:113)
	at org.jboss.resteasy.reactive.server.handlers.RequestDeserializeHandler.getAnnotations(RequestDeserializeHandler.java:129)
	at org.jboss.resteasy.reactive.server.handlers.RequestDeserializeHandler.isReadable(RequestDeserializeHandler.java:114)
	at org.jboss.resteasy.reactive.server.handlers.RequestDeserializeHandler.handle(RequestDeserializeHandler.java:75)
	at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:109)
	at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:142)
	at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:564)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base@17.0.5/java.lang.Thread.run(Thread.java:833)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203)
Caused by: java.lang.NoSuchMethodException: com.redhat.openshift.knative.showcase.events.Rest.receive(io.cloudevents.CloudEvent)
	at java.base@17.0.5/java.lang.Class.getMethod(DynamicHub.java:2227)
	at org.jboss.resteasy.reactive.server.spi.ResteasyReactiveResourceInfo.getMethod(ResteasyReactiveResourceInfo.java:67)
	... 15 more

2023-04-11 20:02:53,193 ERROR [org.jbo.res.rea.com.cor.AbstractResteasyReactiveContext] (executor-thread-0) Request failed: java.lang.RuntimeException: java.lang.NoSuchMethodException: com.redhat.openshift.knative.showcase.events.Rest.receive(io.cloudevents.CloudEvent)
	at org.jboss.resteasy.reactive.server.spi.ResteasyReactiveResourceInfo.getMethod(ResteasyReactiveResourceInfo.java:72)
	at org.jboss.resteasy.reactive.server.spi.ResteasyReactiveResourceInfo.getParameterAnnotations(ResteasyReactiveResourceInfo.java:113)
	at org.jboss.resteasy.reactive.server.handlers.RequestDeserializeHandler.getAnnotations(RequestDeserializeHandler.java:129)
	at org.jboss.resteasy.reactive.server.handlers.RequestDeserializeHandler.isReadable(RequestDeserializeHandler.java:114)
	at org.jboss.resteasy.reactive.server.handlers.RequestDeserializeHandler.handle(RequestDeserializeHandler.java:75)
	at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:109)
	at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:142)
	at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:564)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueu2023-04-11 20:02:53,194 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 << "HTTP/1.1 500 Internal Server Error[\r][\n]"
eExecutor.java:2449)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base@17.0.5/java.lang.Thread.run(Thread.java:833)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203)
Caused 2023-04-11 20:02:53,194 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 << "content-type: application/json; charset=utf-8[\r][\n]"
by: java.lang.NoSuchMethodException: com.redhat.openshift.knative.showcase.events.Rest.receive(io.cloudevents.CloudEvent)
	at java.base@17.0.5/java.lang.Class.getMethod(DynamicHub.java:2227)
	at org.jboss.resteasy.reactive.server.spi.ResteasyReactiveResourceInfo.getMethod(ResteasyReactiveResourceInfo.java:67)
	... 15 more

2023-04-11 20:02:53,195 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 << "content-length: 72[\r][\n]"
2023-04-11 20:02:53,195 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 << "[\r][\n]"
2023-04-11 20:02:53,195 DEBUG [org.apa.htt.wire] (main) http-outgoing-0 << "{"details":"Error id e96c15cb-fb8a-49a6-ba90-c6d850092151-1","stack":""}"

javax.ws.rs.WebApplicationException: Unknown error, status code 500

	at org.jboss.resteasy.microprofile.client.DefaultResponseExceptionMapper.toThrowable(DefaultResponseExceptionMapper.java:21)
	at org.jboss.resteasy.microprofile.client.ExceptionMapping$HandlerException.mapException(ExceptionMapping.java:41)
	at org.jboss.resteasy.microprofile.client.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:155)
	at com.redhat.openshift.knative.showcase.events.$Proxy54.receive(Unknown Source)
	at com.redhat.openshift.knative.showcase.events.EndpointTest.sendEvent(EndpointTest.java:66)
	at com.redhat.openshift.knative.showcase.events.EndpointTest.receive(EndpointTest.java:49)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestMethod(QuarkusTestExtension.java:907)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
	at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)

2023-04-11 20:02:53,256 INFO  [org.ecl.jet.ser.AbstractConnector] (main) Stopped NetworkTrafficServerConnector@3d916fd4{HTTP/1.1, (http/1.1, h2c)}{0.0.0.0:0}
2023-04-11 20:02:53,257 INFO  [org.ecl.jet.ser.han.ContextHandler] (main) Stopped o.e.j.s.ServletContextHandler@74a8659d{/,null,STOPPED}
2023-04-11 20:02:53,258 INFO  [org.ecl.jet.ser.han.ContextHandler] (main) Stopped o.e.j.s.ServletContextHandler@4a9f17bd{/__admin,null,STOPPED}

Process finished with exit code 255

You can see in the logs the app has started, and the request was properly sent. The exception happens on server-side.

/kind bug

duglin commented

@pierDipi @JemDay any ideas?

cardil commented

Interestingly, when running in JVM mode, which works, the stacktrace is different (I dumped it manually):

com.redhat.openshift.knative.showcase.events.Rest.receive(Rest.java:27)
com.redhat.openshift.knative.showcase.events.Rest_ClientProxy.receive(Unknown Source)
com.redhat.openshift.knative.showcase.events.Endpoint$quarkusrestinvoker$receive_ed27cfee18d9553e91ab63b74676b55c5cd1cd30.invoke(Unknown Source)
org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:115)
org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:142)
io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:564)
org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
java.base/java.lang.Thread.run(Thread.java:833)

https://github.com/quarkusio/quarkus/blob/2.13.5.Final/extensions/resteasy-reactive/quarkus-resteasy-reactive/runtime/src/main/java/io/quarkus/resteasy/reactive/server/runtime/QuarkusResteasyReactiveRequestContext.java#L115

In the Native mode, the stacktrace has the following:

org.jboss.resteasy.reactive.server.handlers.RequestDeserializeHandler.handle(RequestDeserializeHandler.java:75)
io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:109)

https://github.com/quarkusio/quarkus/blob/2.13.5.Final/extensions/resteasy-reactive/quarkus-resteasy-reactive/runtime/src/main/java/io/quarkus/resteasy/reactive/server/runtime/QuarkusResteasyReactiveRequestContext.java#L109

hmm, I'm not sure, we're not doing anything special to be honest

cardil commented

For sure, the failure is caused by the fact the code tries to use reflection (here: https://github.com/quarkusio/quarkus/blob/2.13.5.Final/independent-projects/resteasy-reactive/server/runtime/src/main/java/org/jboss/resteasy/reactive/server/spi/ResteasyReactiveResourceInfo.java#L67)

In Native mode (Graalvm compiled binary) reflection doesn't work. That's why we get "method not found" exception.

The code should use the code index (see: https://github.com/smallrye/jandex), built at compile time by Quarkus deployment plugins, for all lookups.

However, I don't know what CloudEvents SDK is doing here wrong...

@cardil is there anything else we should do here?

cardil commented

quarkusio/quarkus#33267 should have resolved this issue. I will confirm...

cardil commented

Works on Quarkus >= 3.1.3.Final