-
Notifications
You must be signed in to change notification settings - Fork 3k
ArC: split logic in ComponentsProviderGenerator #51407
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
base: main
Are you sure you want to change the base?
Conversation
mkouba
commented
Dec 4, 2025
- to support very large deployments
- we use the same strategy for beans, observers and removedBeans
- first we split the processing into multiple groups; each group is represented by a static method
- several groups belong to a container class
- static methods are invoked either directly from the ComponentsProvider or from a dedicated lambda
|
FTR the container classes are necessary because of the constant pool limit. |
...ojects/arc/processor/src/main/java/io/quarkus/arc/processor/ComponentsProviderGenerator.java
Outdated
Show resolved
Hide resolved
Ladicek
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is obviously OK (when I diff with whitespace disabled).
My only objection is that the secondary grouping is way too ugly compared to the primary grouping; it should be done the same way, also in preprocess().
gsmet
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added a small comment but feel free to ignore if you have a strong opinion. My point is that we should avoid splitting in the relatively standard case that used to work before.
I kinda agree with @Ladicek that we should make the splitting as consistent as possible.
...ojects/arc/processor/src/main/java/io/quarkus/arc/processor/ComponentsProviderGenerator.java
Outdated
Show resolved
Hide resolved
I'm not sure either, but if we did what I suggested on Zulip (split the bean graph into components and make sure the entire component is generated in a single method), we might get slight performance benefits of avoiding map lookups and using values directly. But I'm not sure how big those benefits would be. |
Sorry it was a reference to the I'm perfectly fine with the general approach. |
- to support very large deployments - we use the same strategy for beans, observers and removedBeans - first we split the processing into multiple groups; each group is represented by a static method - several groups belong to a container class - static methods are invoked either directly from the ComponentsProvider or from a dedicated lambda
110e4c6 to
1acb03a
Compare