-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
ArC - parallelize resource generation #26381
Conversation
I'll take a look tomorrow if that's ok |
No problem at all. It's not a high priority... |
The changes are pretty straightforward, but the code duplication on a few places is unfortunate. Also, not sure why you need to precompute those names ( What I find most interesting is that you can actually achieve speedup with this. That suggests that the concurrent build step execution framework can't utilize the CPU fully, probably because a lot of build steps do blocking operations? |
Nice idea :) |
We need to generate the names first because they're used in the ComponentsProviderGenerator. If we don't pregenerate the names we would have to wait for all bean and observer generators to finish and then start the generation of the
There are build steps whose dependencies/dependents prevent or limit the concurrent execution. Typical examples are |
It's just a safeguard so that it can be disabled in case of an oversight that would cause some concurrency issues. And it's enabled by default. |
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 don't have any objections to this.
The idea is solid, doesn't hurt for smaller deployments and if it helps in beefy scenarios, it's always a plus. So +1
EDIT: I'd also be fine with not using the config option and just making it default, but I understand why you wanted to keep that in. Perhaps we could have it straight up deprecated so that we can eventually get rid of it once we see this doesn't cause troubles?
The less config options, the better :-)
yes I understand that, but I often think we should be a bit more confident with our changes and then stand behind them - or when not test them more. |
I think the idea here is that if the change is to cause some problems, users will report it and we can then direct them to use this config option as a temporary workaround before we have a proper fix. So it effectively unblocks the user. |
yea I agree in principle - feel free to ignore me, but at least deprecating the new property would be nice. |
8ba78f2
to
e9cb97e
Compare
This comment has been minimized.
This comment has been minimized.
e9cb97e
to
4320fce
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
4320fce
to
f85208e
Compare
Failing Jobs - Building f85208e
Full information is available in the Build summary check run. Failures⚙️ Devtools Tests - JDK 11 #- Failing: integration-tests/devtools
📦 integration-tests/devtools✖
⚙️ Devtools Tests - JDK 11 Windows #- Failing: integration-tests/devtools
📦 integration-tests/devtools✖
⚙️ Devtools Tests - JDK 17 #- Failing: integration-tests/devtools
📦 integration-tests/devtools✖
⚙️ Gradle Tests - JDK 11 Windows #- Failing: integration-tests/gradle
📦 integration-tests/gradle✖
|
The failing tests above are either flaky or have been already fixed in main and are not related to this. So feel free to merge when ready. |
I have to admit that I have no "scientifict measurements". My observations while working on this PR are that for small apps the performance is more or less identical and for large apps (such as 003-quarkus-many-extensions) the difference was ~15% on average.