Uploaded image for project: 'Red Hat build of Keycloak'
  1. Red Hat build of Keycloak
  2. RHBK-1680

[GHI#29579] Increased augmentation time after Quarkus 3.8.4 upgrade

XMLWordPrintable

    • False
    • Hide

      None

      Show
      None
    • False

      Before reporting an issue

      [X] I have read and understood the above terms for submitting issues, and I understand that my issue may be closed without action if I do not follow them.

      Area

      dist/quarkus

      Describe the bug

      Quarkus augmentation time significantly increased after the upgrade to 3.8.4. It appears to mostly be due to the changes in the ResteasyReactiveJacksonProcessor#handleFieldSecurity method.

      Version

      Nightly

      Regression

      [X] The issue is a regression

      Expected behavior

      Not so drastic impact on augmentation time. Timing info from 3.8.3:

      Without Providers:
      2024-05-13 17:55:51,949 TRACE [io.qua.builder] (build-8) Finished step "io.quarkus.resteasy.reactive.jackson.deployment.processor.ResteasyReactiveJacksonProcessor#handleFieldSecurity" in 17 ms

      With Providers:
      2024-05-13 17:51:30,489 TRACE [io.qua.builder] (build-64) Finished step "io.quarkus.resteasy.reactive.jackson.deployment.processor.ResteasyReactiveJacksonProcessor#handleFieldSecurity" in 19 ms

      Actual behavior

      Large jump in augmentation time when using our custom providers. The time increase is almost unnoticeable without providers.

      Without Providers:
      2024-05-02 19:25:17,643 TRACE [io.qua.builder] (build-28) Finished step "io.quarkus.resteasy.reactive.jackson.deployment.processor.ResteasyReactiveJacksonProcessor#handleFieldSecurity" in 827 ms

      With Providers:
      2024-05-02 19:19:52,537 TRACE [io.qua.builder] (build-23) Finished step "io.quarkus.resteasy.reactive.jackson.deployment.processor.ResteasyReactiveJacksonProcessor#handleFieldSecurity" in 44565 ms

      How to Reproduce?

      Download or build the nightly keycloak quarkus distribution.
      Enable TRACE for io.quarkus
      Run /bin/kc.sh build

      The increase in time can be seen without providers, but it's more dramatic with ours.

      Anything else?

      This commit in quarkus introduced a bunch of recursion in related code.
      https://github.com/quarkusio/quarkus/commit/e6376f9e5b4623989745079786d9aa0fd6bf6d72

      It looks like it's checking return types from REST resource methods, but I'm having trouble tracking down exactly what about our RealmResourceProviders might be causing the increase in build time.

              Unassigned Unassigned
              pvlha Pavel Vlha
              Keycloak Cloud Native
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: