Schema-Builder update Quarkus 3.12 to 3.12 affects schema and startup #2171
-
Hey smallrye-team, While upgrading the quarkus-platform-bom dependency from 3.12.3. to 3.13.3 the application couldn't start. The reason was invalid schema creation by schema-builder. tl;dr
And here is the Log-Output for the broken schema definition that was bit confusing (in main branch):
long story
Branch 'working_version_3.13' in contrast (with 2.9.1 of smallrye-graphql and 22.1 of graphql-java) renders following schema:
The ID fields we are fine with...that was kind of wrong in old impl. But now, in order to have a running application, we need to mark the fields in the interfaces as nullable to have these fields non-nullable in the concrete type (see 'diagnostic'-field or 'id' itself). Also the description is not beeing traversed down to the concrete type anymore (which is also unpractical for our needs -> means, c/p the descriptions from interfaces to concrete types). What do you think? Best, |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
Hi Steffen, Thanks for starting the discussion! We've analyzed the code and identified the cause of the issue. Commit fb1c3f3 inadvertently switched the order in which the Jandex API checks methods. Now, it checks interface methods first, followed by class methods. This change leads to a situation where the Proposed Solution: We've found a potential solution that fixes the issue in the reproducer. By adding Also, to address a potential type conflict, there needs to be added |
Beta Was this translation helpful? Give feedback.
Hi Steffen,
Thanks for starting the discussion! We've analyzed the code and identified the cause of the issue.
Commit fb1c3f3 inadvertently switched the order in which the Jandex API checks methods. Now, it checks interface methods first, followed by class methods.
This change leads to a situation where the
@NonNull
annotation on a field in a super-interface is overwritten by a field in the subclass that lacks the annotation–since Lombok generates public getters and setters, but the field itself (with the annotation) in the superclass is private, the subclass's getter doesn't inherit the annotation.Proposed Solution:
We've found a potential solution that fixes the issue in the reproducer…