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

Quarkus Kotlin Native Reactive REST Client not working properly #30078

Closed
arolfes opened this issue Dec 27, 2022 · 4 comments · Fixed by #30132
Closed

Quarkus Kotlin Native Reactive REST Client not working properly #30078

arolfes opened this issue Dec 27, 2022 · 4 comments · Fixed by #30132
Assignees
Labels
Milestone

Comments

@arolfes
Copy link

arolfes commented Dec 27, 2022

Describe the bug

Hello Quarkus developers,

I wanna make a POST call with the reative REST Client. In JVM Mode everything works as expected. In native mode the POST Body is empty.

I created a simple project to reporduce the issue. https://github.com/arolfes/quarkus-kotlin-reactive-rest-client

I can not say if I use Kotlin the wrong way or the reactive rest client the wrong way.

Everything (JVM and native Mode) is working with the "old" rest client

Thanks in advance for helping me.

Expected behavior

The body of the REST Call is not empty

Log Messages from the JVM Mode Test

2022-12-27 10:08:48,806 INFO  [com.git.GreetingResource] (executor-thread-0) firstName=Foo, lastName=Bar
2022-12-27 10:08:48,806 INFO  [com.git.GreetingResource] (executor-thread-0) greetingModel=GreetingModel(firstName=Foo, lastName=Bar)
2022-12-27 10:08:48,907 DEBUG [org.jbo.res.rea.cli.log.DefaultClientLogger] (vert.x-eventloop-thread-0) Request: POST http://localhost:8080/greeting Headers[Accept=application/json Content-Type=application/json User-Agent=Resteasy Reactive Client content-length=36], Body:
{"firstName":"Foo","lastName":"Bar"}

Actual behavior

I added Request Response Logging and Some logging infos to the object I wanna send.

Log Message from native Mode test

2022-12-27 10:08:51,769 INFO  [com.git.GreetingResource] (executor-thread-0) firstName=Foo, lastName=Bar
2022-12-27 10:08:51,769 INFO  [com.git.GreetingResource] (executor-thread-0) greetingModel=GreetingModel(firstName=Foo, lastName=Bar)
2022-12-27 10:08:51,770 DEBUG [org.jbo.res.rea.cli.log.DefaultClientLogger] (vert.x-eventloop-thread-1) Request: POST http://localhost:8080/greeting Headers[Accept=application/json Content-Type=application/json User-Agent=Resteasy Reactive Client content-length=2], Body:
{}

How to Reproduce?

clone the github repo https://github.com/arolfes/quarkus-kotlin-reactive-rest-client
execute the native mode test

Output of uname -a or ver

Linux fedora 6.0.15-300.fc37.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Dec 21 18:33:23 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Output of java -version

OpenJDK 64-Bit Server VM GraalVM CE 22.3.0 (build 17.0.5+8-jvmci-22.3-b08, mixed mode, sharing)

GraalVM version (if different from Java)

No response

Quarkus version or git rev

2.15.1

Build tool (ie. output of mvnw --version or gradlew --version)

Gradle 7.5.1

Additional information

No response

@arolfes arolfes added the kind/bug Something isn't working label Dec 27, 2022
@quarkus-bot
Copy link

quarkus-bot bot commented Dec 27, 2022

/cc @Sgitario(rest-client), @cescoffier(rest-client), @evanchooly(kotlin), @geoand(kotlin,rest-client)

@geoand
Copy link
Contributor

geoand commented Jan 3, 2023

A workaround is to add @RegisterForReflection to your GreetingModel although I am going to see if Quarkus can do that automatically.

@geoand geoand self-assigned this Jan 3, 2023
@arolfes
Copy link
Author

arolfes commented Jan 3, 2023

Hello @geoand ,

thank you for the reply. The workaround is totally sufficient for me. Now it's working as expected.

@geoand
Copy link
Contributor

geoand commented Jan 3, 2023

#30132 should make the workaround redundant

gastaldi added a commit that referenced this issue Jan 5, 2023
@quarkus-bot quarkus-bot bot added this to the 2.16 - main milestone Jan 5, 2023
@gsmet gsmet modified the milestones: 2.16 - main, 2.15.3.Final Jan 9, 2023
gsmet pushed a commit to gsmet/quarkus that referenced this issue Jan 9, 2023
benkard added a commit to benkard/mulkcms2 that referenced this issue Jan 14, 2023
This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [io.quarkus:quarkus-maven-plugin](https://github.com/quarkusio/quarkus) | build | patch | `2.15.2.Final` -> `2.15.3.Final` |
| [io.quarkus:quarkus-universe-bom](https://github.com/quarkusio/quarkus-platform) | import | patch | `2.15.2.Final` -> `2.15.3.Final` |

---

### Release Notes

<details>
<summary>quarkusio/quarkus</summary>

### [`v2.15.3.Final`](https://github.com/quarkusio/quarkus/releases/tag/2.15.3.Final)

[Compare Source](quarkusio/quarkus@2.15.2.Final...2.15.3.Final)

##### Complete changelog

-   [#&#8203;30255](quarkusio/quarkus#30255) - Introduce a JSON Stream parser for the reactive rest client
-   [#&#8203;30242](quarkusio/quarkus#30242) - Throw an IllegalStateException with basic info about the provider that failed to provide a resource
-   [#&#8203;30227](quarkusio/quarkus#30227) - SmallRye GraphQL 1.9.1/2.0.1 + config property to control Federation
-   [#&#8203;30218](quarkusio/quarkus#30218) - OIDC documentation fixes
-   [#&#8203;30200](quarkusio/quarkus#30200) - Ensure that Kotlin implementation of QuarkusApplication works properly
-   [#&#8203;30195](quarkusio/quarkus#30195) - Log graphql.execution.AbortExecutionException when it occurs
-   [#&#8203;30190](quarkusio/quarkus#30190) - 2.15.2.Final breaks command mode with main class extends from QuarkusApplication in kotlin
-   [#&#8203;30187](quarkusio/quarkus#30187) - Bump xstream from 1.4.19 to 1.4.20
-   [#&#8203;30183](quarkusio/quarkus#30183) - Fixing typos in security overview doc
-   [#&#8203;30177](quarkusio/quarkus#30177) - Properly handle SSE comments in RESTEasy Reactive client and server code
-   [#&#8203;30172](quarkusio/quarkus#30172) - Codestarts - Fix flattening of log levels
-   [#&#8203;30169](quarkusio/quarkus#30169) - NullPointerException when sending SSE with comment only
-   [#&#8203;30161](quarkusio/quarkus#30161) - Align behavior for getDeferredIdentity and getIdentity in TestIdentityAssociation
-   [#&#8203;30160](quarkusio/quarkus#30160) - Different behavior in TestIdentityAssociation for getDeferredIdentity and getIdentity
-   [#&#8203;30157](quarkusio/quarkus#30157) - Gradle quarkusDev: don't use test classes dir for app classes
-   [#&#8203;30155](quarkusio/quarkus#30155) - Show how to verify smallrye-jwt issuer in a shared network
-   [#&#8203;30154](quarkusio/quarkus#30154) - Remove remaining references to javax classes
-   [#&#8203;30152](quarkusio/quarkus#30152) - Improve error handling of AbortExecutionException in smallrye-graphql extension
-   [#&#8203;30146](quarkusio/quarkus#30146) - Properly segregate Json MessageBodyReader/Writer classes for server and client
-   [#&#8203;30145](quarkusio/quarkus#30145) - GraphQL federation directives, which allow multiple values, do not match Apollo contract
-   [#&#8203;30142](quarkusio/quarkus#30142) - When disabling name and version for label selectod in k8s, don't remove from labels
-   [#&#8203;30138](quarkusio/quarkus#30138) - Keycloak Dev Services
-   [#&#8203;30132](quarkusio/quarkus#30132) - Register REST Client body parameters for reflection
-   [#&#8203;30119](quarkusio/quarkus#30119) - Enable/disable GraphQL Federation automatically (+ add a config property for it)
-   [#&#8203;30100](quarkusio/quarkus#30100) - Setting `add-version-to-label-selectors: false` removes the app.kubernetes.io/version label
-   [#&#8203;30078](quarkusio/quarkus#30078) - Quarkus Kotlin Native Reactive REST Client not working properly
-   [#&#8203;30061](quarkusio/quarkus#30061) - Adding Kotlin Tests Breaks Kotlin/Java project
-   [#&#8203;30044](quarkusio/quarkus#30044) - Resteasy Reactive Rest Client fails to re-construct large chunks of streamed json (stream+json) and fails deserialization
-   [#&#8203;29998](quarkusio/quarkus#29998) - Bump to smallrye-config 2.13.1
-   [#&#8203;29918](quarkusio/quarkus#29918) - smallrye-config: Converter<Int> throws IllegalStateException
-   [#&#8203;29609](quarkusio/quarkus#29609) - Remove Reflection replacements, now supported by GraalVM

</details>

<details>
<summary>quarkusio/quarkus-platform</summary>

### [`v2.15.3.Final`](quarkusio/quarkus-platform@2.15.2.Final...2.15.3.Final)

[Compare Source](quarkusio/quarkus-platform@2.15.2.Final...2.15.3.Final)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4wIiwidXBkYXRlZEluVmVyIjoiMzQuMjQuMCJ9-->
ebullient pushed a commit to maxandersen/quarkus that referenced this issue Jan 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants