Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
cardil opened this issue Apr 11, 2023 · 9 comments
Closed

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

cardil opened this issue Apr 11, 2023 · 9 comments

Comments

@cardil
Copy link

cardil commented Apr 11, 2023

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 [email protected]/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 [email protected]/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 [email protected]/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 [email protected]/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

@pierDipi pierDipi added the bug Something isn't working label Apr 11, 2023
@duglin
Copy link
Contributor

duglin commented Apr 12, 2023

@pierDipi @JemDay any ideas?

@cardil
Copy link
Author

cardil commented Apr 12, 2023

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

@pierDipi
Copy link
Member

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

@cardil
Copy link
Author

cardil commented Apr 12, 2023

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
Copy link
Author

cardil commented Apr 13, 2023

@pierDipi
Copy link
Member

@cardil is there anything else we should do here?

@cardil
Copy link
Author

cardil commented Jul 21, 2023

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

@cardil
Copy link
Author

cardil commented Jul 21, 2023

Works on Quarkus >= 3.1.3.Final

@cardil cardil closed this as completed Jul 21, 2023
@pierDipi pierDipi removed the bug Something isn't working label Jul 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants