-
Notifications
You must be signed in to change notification settings - Fork 2.8k
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
Add @Patch support for RestClient #9342
Comments
We need to figure out in which cases we default to the JDK http client instead of the Apache one. We could also try to switch to the vert.x http client while we're at it. |
From the brief look I took yesterday, it seems like we default to URLConnection when SSL isn't enabled. |
Got PATCH request to work by setting quarkus.ssl.native=true If you decide to stay with URLConnection for some reason I'd love to see a config property for selecting engine. |
I don't see why URLConnection should be the default, so let's wait for input for @kenfinnigan and @asoldano |
I think @kenfinnigan did this, I honestly don't remembers the reason. |
If you and @kenfinnigan agree, I can take it up to use Apache HTTP Client as the default. |
The reason this uses It's not possible to use the Apache HTTP Client in native without SSL enabled. |
@kenfinnigan glad to have you back :). Considering the cost of having SSL enabled is now reduced and most of the websites are now SSL, maybe we should just make the extension enable SSL? And we would not support having SSL disabled with the REST client. Sounds like an acceptable tradeoff considering the push to SSL. |
Thanks. Possibly, but it's a behavior change so we'd need to properly notify users. In addition, it's probably worth ensuring that SSL on JVM is as simple as we can make it, as we'd need all users to begin doing it. Would the preferred solution be to remove the use of |
@kenfinnigan , can you please clarify this? I don't understand how an option in RESTEasy (the URLConnection engine), which is not the default behaviour but is used by Quarkus, could be considered a problem here. Btw, I haven't looked into the details of Apache HTTP Client, but is there a way to patch it so that you can use native without SSL? |
@asoldano The MP REST Client uses the The reason that was done is that classes within the Apache HTTP Client require SSL classes even when SSL is disabled. There was no way to fix it without modifying the internal Apache HTTP Client code as far as I recall |
@kenfinnigan thanks, for some reasons I was remembering this was in Quarkus, while actually it's in resteasy 4.x because of Quarkus (you did this here resteasy/resteasy@a371154 and I merged it ;-) ) Regarding Apache HTTP Client, my point was really if you thought about a contribution to Apache HTTP Client for making the SSL components used only when really needed, but clearly that won't be anything we can have quickly released. |
Reverting it is one option, so it goes back to using Apache HTTP Client by default in any situation. Not sure if that would be considered a "breaking change" for RESTEasy or not. I didn't look into fixing it in the upstream, but it might be something we want to consider to make it work for any situation. Though it wouldn't be a quick fix |
I think that would be doable in a minor |
@geoand so I was having a look at that one and I wonder if we have it already covered now with Note that we produce a |
Yeah, I use the Apache HTTP Client in the extensions that use boostrap config and there I just turn on SSL, but I'll have a closer look. |
Would it make sense to use the JDK 11 HttpClient as the underlying implementation? Then it would work if you run in JDK 11+ without any extra configuration. |
As long as we support Java 8, we can't really do this :( |
This is done in order to enable the use of Apache HTTP Client in all cases where the REST Client is used. This enables us to drop the fallback to URLConnection which is rather limited Fixes: quarkusio#9342
…ient The fallback was originally added to get around limitation in Apache HTTP Client when SSL is completely disabled in native binaries. However we can get around these limitations in a more elegant manner in Quarkus (see quarkusio/quarkus#9773). By defaulting to Apache HTTP Client, things like HTTP Patch can be supported OOTB (see quarkusio/quarkus#9342).
#9773 should take care of the issue (but it requires resteasy/resteasy#2431 and a RESTEasy version bump) |
This is done in order to enable the use of Apache HTTP Client in all cases where the REST Client is used. This enables us to drop the fallback to URLConnection which is rather limited Fixes: quarkusio#9342
…ient The fallback was originally added to get around limitation in Apache HTTP Client when SSL is completely disabled in native binaries. However we can get around these limitations in a more elegant manner in Quarkus (see quarkusio/quarkus#9773). By defaulting to Apache HTTP Client, things like HTTP Patch can be supported OOTB (see quarkusio/quarkus#9342).
…ient The fallback was originally added to get around limitation in Apache HTTP Client when SSL is completely disabled in native binaries. However we can get around these limitations in a more elegant manner in Quarkus (see quarkusio/quarkus#9773). By defaulting to Apache HTTP Client, things like HTTP Patch can be supported OOTB (see quarkusio/quarkus#9342).
…ient The fallback was originally added to get around limitation in Apache HTTP Client when SSL is completely disabled in native binaries. However we can get around these limitations in a more elegant manner in Quarkus (see quarkusio/quarkus#9773). By defaulting to Apache HTTP Client, things like HTTP Patch can be supported OOTB (see quarkusio/quarkus#9342).
…bled for REST Client (#2431) The fallback was originally added to get around limitation in Apache HTTP Client when SSL is completely disabled in native binaries. However we can get around these limitations in a more elegant manner in Quarkus (see quarkusio/quarkus#9773). By defaulting to Apache HTTP Client, things like HTTP Patch can be supported OOTB (see quarkusio/quarkus#9342).
This is done in order to enable the use of Apache HTTP Client in all cases where the REST Client is used. This enables us to drop the fallback to URLConnection which is rather limited Fixes: quarkusio#9342
This is done in order to enable the use of Apache HTTP Client in all cases where the REST Client is used. This enables us to drop the fallback to URLConnection which is rather limited Fixes: quarkusio#9342
Make REST Client work whether or not SSL is enabled or not in native
This is done in order to enable the use of Apache HTTP Client in all cases where the REST Client is used. This enables us to drop the fallback to URLConnection which is rather limited Fixes: quarkusio#9342
* 4.5.0-SNAPSHOT -> 4.5.0.Final (#2307) * 4.5.0.Final -> 4.6.0-SNAPSHOT * [RESTEASY-2496]:Add test case * [RESTEASY-2510] Split RESTUtils to links provider and injector * RESTEASY-2445 * [RESTEASY-2517] Async io fixes (#2315) * Apply same fix for SSE streams into raw streams To avoid onNext finishing after onComplete * Test for raw stream and async io * Fixed typo in onComplete/onWriteComplete * Fix potential bug spotted by Stuart * [RESTEASY-2520] CDI BeanManager fix for Quarkus (#2318) * Fix for Quarkus (quarkusio/quarkus#7639) Signed-off-by:Phillip Kruger <[email protected]> * Added check for CDI in construct. Signed-off-by:Phillip Kruger <[email protected]> * Checkstyle fixes Signed-off-by:Phillip Kruger <[email protected]> * [RESTEASY-2518] added value check and test for query param replacement * [RESTEASY-2503] Throw ViolationException for EJBs with just parameter violations. * RESTEASY-2519 (#2320) * RESTEASY-2519 * update * [RESTEASY-2535] Upgrade Jackson2 to 2.10.3 * [RESTEASY-2541] Fix RestClientListeners * [RESTEASY-2542] Excluding tests * RESTEASY-2554 Update section "Upgrading RESTEasy within WildFly" (#2349) * update * RESTEASY-2554 * remove module * update doc * minor fix * minor addition * minor fix * minor addition * fix version * minor fix * [RESTEASY-2559] Improper validation of response header in MediaTypeHeaderDelegate.java class * [RESTEASY-2551] Upgraded io.netty:netty-all to version 4.1.48.Final * [RESTEASY-2543] add regex change * [RESTEASY-2226]:NullPointerException in PatchMethodFilter * [RESTEASY-2385] Added support for embedded MultipartOutput types. Added testcase. * [RESTEASY-2480] re-enable code handling base64 * [RESTEASY-2532] replace reference to jakarta-json * [RESTEASY-2565] Mp client async interceptors (#2359) * Tie the AsyncInvocationInterceptor to each invocation * Spotted a bug, I think * [RESTEASY-2566] Set response code to 500 if writing exception fails (#2358) * [RESTEASY-2562] Incorrect status code when WebApplicationException is… (#2365) * [RESTEASY-2562] Incorrect status code when WebApplicationException is thrown while parsing @*Param * [RESTEASY-2562] Checkstyle - make arg final * [RESTEASY-2495] HeaderParam could have a ParamConverter related (#2292) AbstractInvocationCollectionProcessor is processing Array and Collection of elements being ParamConverter aware. But with single values is delegating in final class to process the value. HeaderParamProcessor is not being aware of such transformation. * [RESTEASY-2495] made HeaderParamProcessor aware of ParamConverter and provided testcase * [RESTEASY-2526] Fix by using asyncutil lib for async loops (#2368) * [RESTEASY-2466] removed profile arquillian.remote * [RESTEASY-2531] expanded and refactored chapter * [RESTEASY-2544] pom updates to arquillian-util and integration-tests * [RESTEASY-2542] ignore any IOException in SSEOutputStream.close() * Test against WildFly 19.0.0.Final instead of Beta2 * [RESTEASY-2526] Turn the com.ibm.async.asyncutil module into private * [RESTEASY-2550] Skip null parameters being processed by ParamConverter's. Also throw an NPE if a parameter annotated with @PathParam it not allowed. https://issues.redhat.com/browse/RESTEASY-2550 * [RESTEASY-2542] Restore tests * [RESTEASY-2239] updated mime4j to version 0.8.2 * Add GitHub Action for running CI builds * [RESTEASY-2561] Allow tests to run in environments other than a Linux local environment. * [RESTEASY-2564] Use a single thread executor instead of the default executor for a more graceful shutdown. * Remove TravisCI runs duplicated by Github Actions * [RESTEASY-2542] Exclude a test again, still failing * [RESTEASY-2542] Exlcude the whole SseTest, not just testReconnect() * Only upload archives for failed runs. Also fix the name to not end with ".zip" * [RESTEASY-2548] add new provider with higher priority than JaxrsFormProvider adding test * [RESTEASY-2560] set scope for must junit dependencies to test * [RESTEASY-2391] changed code to use getMethod() * [RESTEASY-2472]:@suspended AsyncResponse timeout still runs, even if … (#2372) * [RESTEASY-2472]:@suspended AsyncResponse timeout still runs, even if the response was resumed before * Update AsyncTimeoutResource.java * Update AsyncTimeoutResource.java Bogus change to rerun tests. Co-authored-by: Ron Sigal <[email protected]> * [RESTEASY-2563: SseBroadcasterImpl.close() puts notifyOnCloseListeners(eventSink) in finally block. (#2396) * [RESTEASY-2576] added client modules * [RESTEASY-2582] CompletionStageResponseTest intermittent failures (#2390) * Prevent memory visibility issues * Refactor AsyncResponseCallback to isolate data from different tests * Same sleep time for similar methods * [RESTEASY-2571] Avoid a NullPointerException of the MediaType associated with request headers is null. https://issues.redhat.com/browse/RESTEASY-2571 * [RESTEASY-2569] RestClient does not propogate incoming headers with inherited Interface * [RESTEASY-2582] Add logs to the test * [RESTEASY-2582] Fix race condition in test * [RESTEASY-1203] Fix validation for JNDI resources. (#2406) * [RESTEASY-2542][RESTEASY-2585] Workaround SseTest intermittent failures (#2404) * Enable SseTest * [RESTEASY-2542]:Fix Sse reconnect test * [RESTEASY-2542]:More Sse test fix * Fix typo and add comment * [RESTEASY-2017]:Fix SSE doesn't work with inherited annotations * Updated links to the new project site * [RESTEASY-2588] Upgrade jackson to 2.10.4 * [RESTEASY-2587] Update classmate to 1.5.1 * Fix RESTEASY-2573 by using ResteashContext.addCloseable variants * Test RESTEASY-2573 for SSE/raw/collect async streaming * [RESTEASY-2542] wait for proxy to be started * [RESTEASY-2576] Added modules to resteasy-bom/pom.xml (#2417) * Added note to testsuite/README.MD on how to run single microprofile-tck tests (#2426) * SseEventOutputImpl: avoid deadlock by avoiding getting into critical sections early RESTEASY-2585 * HttpServletResponseWrapper: try working around UNDERTOW-1713: RESTEASY-2585 * RESTEASY-2524 (#2332) * RESTEASY-2524 * trailing spaces removed * [RESTEASY-2585]:Remove Thread.sleep() workaround in SseTest * Updating target test containers * [RESTEASY-2598] Upgrade Infinispan to 10.1.8 * [RESTEASY-2598] Exclude ServerCacheInterceptorTest in WFLY19 * Fix modules test references to properly run with WFLY20 too * Exclude test failing on GithubActions CI due to microprofile/microprofile-rest-client#265 * [RESTESY-2601] Exclude test * [RESTEASY-2605] Remove the fallback to URLConnection when SSL is disabled for REST Client (#2431) The fallback was originally added to get around limitation in Apache HTTP Client when SSL is completely disabled in native binaries. However we can get around these limitations in a more elegant manner in Quarkus (see quarkusio/quarkus#9773). By defaulting to Apache HTTP Client, things like HTTP Patch can be supported OOTB (see quarkusio/quarkus#9342). Co-authored-by: Ron Sigal <[email protected]> Co-authored-by: Jim Ma <[email protected]> Co-authored-by: Gytis Trikleris <[email protected]> Co-authored-by: 阿男 <[email protected]> Co-authored-by: Stéphane Épardaud <[email protected]> Co-authored-by: Phillip Krüger <[email protected]> Co-authored-by: R Searls <[email protected]> Co-authored-by: Bartosz Spyrko-Smietanko <[email protected]> Co-authored-by: Stuart Douglas <[email protected]> Co-authored-by: Anil Gursel <[email protected]> Co-authored-by: David Santos <[email protected]> Co-authored-by: James Perkins <[email protected]> Co-authored-by: Duncan <[email protected]> Co-authored-by: bobbyphilip <[email protected]> Co-authored-by: Tommaso Borgato <[email protected]> Co-authored-by: Georgios Andrianakis <[email protected]>
This is done in order to enable the use of Apache HTTP Client in all cases where the REST Client is used. This enables us to drop the fallback to URLConnection which is rather limited Fixes: quarkusio#9342
When I try to use a PATCH method with the RestClient in none-native mode, We obtain this error
javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request: java.net.ProtocolException: Invalid HTTP method: PATCH at org.jboss.resteasy.client.jaxrs.engines.URLConnectionEngine.invoke(URLConnectionEngine.java:63) at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:488) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:149) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:112) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) at com.sun.proxy.$Proxy83.updatePartial(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.jboss.resteasy.microprofile.client.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:149) at com.sun.proxy.$Proxy86.updatePartial(Unknown Source) at com.example.ExampleRestConnector_27306872b9b9d6a5cde2e5a56fad18628bb23077_Synthetic_ClientProxy.updatePartial(TwinRestConnector_27306872b9b9d6a5cde2e5a56fad18628bb23077_Synthetic_ClientProxy.zig:233) at com.example.ExampleController.deleteNode(ExampleController.java:360) at com.example.ExampleController.update(ExampleController.java:223) at com.example.ExampleController_Subclass.update$$superaccessor11(ExampleController_Subclass.zig:172) at com.example.ExampleController_Subclass$$function$$11.apply(ExampleController_Subclass$$function$$11.zig:51) at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54) at io.quarkus.hibernate.validator.runtime.interceptor.AbstractMethodValidationInterceptor.validateMethodInvocation(AbstractMethodValidationInterceptor.java:69) at io.quarkus.hibernate.validator.runtime.interceptor.MethodValidationInterceptor.validateMethodInvocation(MethodValidationInterceptor.java:17) at io.quarkus.hibernate.validator.runtime.interceptor.MethodValidationInterceptor_Bean.intercept(MethodValidationInterceptor_Bean.zig:177) at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41) at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41) at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32) at com.example.ExampleController_Subclass.update(ExampleController_Subclass.zig:336) at com.example.ExampleController_ClientProxy.update(ExampleController_ClientProxy.zig:774) at com.exemple.ExampleService.update(ExampleService.java:151) at com.exemple.ExampleService_Subclass.update$$superaccessor7(ExampleService_Subclass.zig:208) at com.exemple.ExampleService_Subclass$$function$$7.apply(ExampleService_Subclass$$function$$7.zig:51) at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54) at io.quarkus.hibernate.validator.runtime.interceptor.AbstractMethodValidationInterceptor.validateMethodInvocation(AbstractMethodValidationInterceptor.java:69) at io.quarkus.hibernate.validator.runtime.jaxrs.JaxrsEndPointValidationInterceptor.validateMethodInvocation(JaxrsEndPointValidationInterceptor.java:32) at io.quarkus.hibernate.validator.runtime.jaxrs.JaxrsEndPointValidationInterceptor_Bean.intercept(JaxrsEndPointValidationInterceptor_Bean.zig:57) at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41) at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41) at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32) at com.exemple.ExampleService_Subclass.update(ExampleService_Subclass.zig:78) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:130) at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:621) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:487) at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:437) at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:362) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:439) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:400) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:374) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:67) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:488) at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:259) at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:160) at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:362) at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:163) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:245) at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:123) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.access$000(VertxRequestHandler.java:36) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:87) at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452) at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29) at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29) at java.base/java.lang.Thread.run(Thread.java:834) at org.jboss.threads.JBossThread.run(JBossThread.java:479) Caused by: java.net.ProtocolException: Invalid HTTP method: PATCH at java.base/java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:487) at java.base/sun.net.www.protocol.http.HttpURLConnection.setRequestMethod(HttpURLConnection.java:570) at org.jboss.resteasy.client.jaxrs.engines.URLConnectionEngine.createConnection(URLConnectionEngine.java:176) at org.jboss.resteasy.client.jaxrs.engines.URLConnectionEngine.invoke(URLConnectionEngine.java:56) ... 68 common frames omitted 09:52:29.174 [executor-thread-1] ERROR o.jboss.resteasy.resteasy_jaxrs.i18n - RESTEASY002010: Failed to execute javax.ws.rs.WebApplicationException: HTTP 400 Bad Request at com.exemple.ExampleService.update(ExampleService.java:154) at com.exemple.ExampleService_Subclass.update$$superaccessor7(ExampleService_Subclass.zig:208) at com.exemple.ExampleService_Subclass$$function$$7.apply(ExampleService_Subclass$$function$$7.zig:51) at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54) at io.quarkus.hibernate.validator.runtime.interceptor.AbstractMethodValidationInterceptor.validateMethodInvocation(AbstractMethodValidationInterceptor.java:69) at io.quarkus.hibernate.validator.runtime.jaxrs.JaxrsEndPointValidationInterceptor.validateMethodInvocation(JaxrsEndPointValidationInterceptor.java:32) at io.quarkus.hibernate.validator.runtime.jaxrs.JaxrsEndPointValidationInterceptor_Bean.intercept(JaxrsEndPointValidationInterceptor_Bean.zig:57) at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41) at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41) at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32) at com.exemple.ExampleService_Subclass.update(ExampleService_Subclass.zig:78) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:130) at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:621) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:487) at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:437) at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:362) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:439) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:400) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:374) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:67) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:488) at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:259) at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:160) at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:362) at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:163) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:245) at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:123) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.access$000(VertxRequestHandler.java:36) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:87) at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452) at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29) at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29) at java.base/java.lang.Thread.run(Thread.java:834) at org.jboss.threads.JBossThread.run(JBossThread.java:479)
I created a demo to reproduce the issue
https://github.com/survivant/quarkus-k8s-hello
HelloExampleTest.testPatch
@patch
@produces("application/merge-patch+json")
@consumes("application/merge-patch+json")
@path("/nodes/{id}")
Node updatePartial(@PathParam("id") UUID id, JsonMergePatch patch);
here the code that is used in the other service that is in Spring
@PatchMapping(path = "/nodes/{id}", consumes = "application/merge-patch+json")
Node updatePartial(@PathVariable UUID id, @RequestBody JsonMergePatch patch);
I'm using Quarkus 1.4.2.Final
There is a workaround, is to use : quarkus.ssl.native=true
The text was updated successfully, but these errors were encountered: