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

Upgrade to Jandex 3.2.0 and use the Jandex annotation overlay #40684

Merged
merged 4 commits into from
May 20, 2024

Conversation

Ladicek
Copy link
Contributor

@Ladicek Ladicek commented May 16, 2024

@Ladicek
Copy link
Contributor Author

Ladicek commented May 16, 2024

Added @mkouba and @manovotn to review the ArC commits and @geoand and @FroMage to review the RESTEasy Reactive commit.

@quarkus-bot quarkus-bot bot added area/arc Issue related to ARC (dependency injection) area/dependencies Pull requests that update a dependency file area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins area/platform Issues related to definition and interaction with Quarkus Platform area/resteasy-reactive area/testing labels May 16, 2024
Copy link
Contributor

@geoand geoand left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Love it!

I only looked at the commit changing RESTEasy Reactive

@quarkus-bot

This comment has been minimized.

Copy link
Contributor

@manovotn manovotn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM
Nice code cleanup!

Copy link
Contributor

@mkouba mkouba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I looked at non-BCE changes in ArC and it looks good! But it would be nice to have some numbers (in terms of memory consumption and build time) for a medium-sized application so that we can be sure there's no regression - after all, it is used extensively.

@quarkus-bot
Copy link

quarkus-bot bot commented May 17, 2024

Status for workflow Quarkus CI

This is the status report for running Quarkus CI on commit 68dc8eb.

✅ The latest workflow run for the pull request has completed successfully.

It should be safe to merge provided you have a look at the other checks in the summary.

You can consult the Develocity build scans.

@Sanne
Copy link
Member

Sanne commented May 20, 2024

I looked at non-BCE changes in ArC and it looks good! But it would be nice to have some numbers (in terms of memory consumption and build time) for a medium-sized application so that we can be sure there's no regression - after all, it is used extensively.

Agreed it would be great to verify metrics - but would you ask that as a blocker @mkouba ? Just wondering about the status here, as I was eager to hit the merge button :)

@Ladicek
Copy link
Contributor Author

Ladicek commented May 20, 2024

I'm trying to get some numbers as we speak, actually :-) It's not easy, because a Quarkus build does a lot of other things, so there's a lot of noise. I'll try to write a microbenchmark, but I fear it's just gonna end up stress testing the JIT compiler and not produce anything meaningful.

@mkouba
Copy link
Contributor

mkouba commented May 20, 2024

I looked at non-BCE changes in ArC and it looks good! But it would be nice to have some numbers (in terms of memory consumption and build time) for a medium-sized application so that we can be sure there's no regression - after all, it is used extensively.

Agreed it would be great to verify metrics - but would you ask that as a blocker @mkouba ? Just wondering about the status here, as I was eager to hit the merge button :)

It's not a blocker but in my exprience, if we don't do it now, we never will ;-).

I'm trying to get some numbers as we speak, actually :-) It's not easy, because a Quarkus build does a lot of other things, so there's a lot of noise. I'll try to write a microbenchmark, but I fear it's just gonna end up stress testing the JIT compiler and not produce anything meaningful.

I was thinking about manually testing something from https://github.com/quarkus-qe/beefy-scenarios and measure the build time/memory consumption. Just to verify there's no significant regression...

@Ladicek
Copy link
Contributor Author

Ladicek commented May 20, 2024

So I took https://github.com/Ladicek/arc-crazybeans/, which has 500 beans, and added the following extensions:

  • quarkus-arc
  • quarkus-cache
  • quarkus-hibernate-orm
  • quarkus-hibernate-validator
  • quarkus-mailer
  • quarkus-messaging
  • quarkus-micrometer
  • quarkus-rest
  • quarkus-smallrye-fault-tolerance

The total number of ArC annotation transformations with these extensions, in the default configuration, is 19.

On an external computer (not on my work laptop), which executes very little processes and was configured for performance measurements, I repeatedly ran mvn clean package and looked at

[io.quarkus.deployment.QuarkusAugmentor] Quarkus augmentation completed in 1909ms

In current main branch, the reported time was nearly always between 1850 and 1900 ms, with several outliers between 1800 and 1850 ms and also between 1900 and 1950 ms.

With this PR, the reported time was nearly always between 1900 and 1950 ms, with several outliers between 1850 and 1900 ms and also between 1950 and 2000 ms.

To measure memory, I ran MAVEN_OPTS="-XX:StartFlightRecording=filename=xxx.jfr,settings=profile,dumponexit=true" mvn clean package 5 times for current main and 5 times for this PR. I then loaded all the JFR files in JMC and saw virtually no difference. The allocation patterns, the GC patterns, the amount of used memory, no significant change in any of those.

@mkouba
Copy link
Contributor

mkouba commented May 20, 2024

In current main branch, the reported time was nearly always between 1850 and 1900 ms, with several outliers between 1800 and 1850 ms and also between 1900 and 1950 ms.

With this PR, the reported time was nearly always between 1900 and 1950 ms, with several outliers between 1850 and 1900 ms and also between 1950 and 2000 ms.

Seems to be an acceptable drop. Did you try the jandex 3.2.0 or the main branch (including smallrye/jandex@29acecc ;-).

To measure memory, I ran MAVEN_OPTS="-XX:StartFlightRecording=filename=xxx.jfr,settings=profile,dumponexit=true" mvn clean package 5 times for current main and 5 times for this PR. I then loaded all the JFR files in JMC and saw virtually no difference. The allocation patterns, the GC patterns, the amount of used memory, no significant change in any of those.

Cool.

@Ladicek
Copy link
Contributor Author

Ladicek commented May 20, 2024

For memory, I only tried Jandex 3.2.0. For time, I tried Jandex 3.2.0 and Jandex main branch with an additional change (no SENTINEL, always store the set of annotations into the map), and I didn't see a difference.

@Sanne Sanne merged commit e6c7304 into quarkusio:main May 20, 2024
51 checks passed
@quarkus-bot quarkus-bot bot added this to the 3.12 - main milestone May 20, 2024
@Ladicek Ladicek deleted the jandex-annotation-overlay branch May 20, 2024 12:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/arc Issue related to ARC (dependency injection) area/dependencies Pull requests that update a dependency file area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins area/platform Issues related to definition and interaction with Quarkus Platform area/resteasy-reactive area/testing
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants