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

unexpected stacktraces about missing Http1xServerResponse and RecordParserImpl vertx classes in native build #40243

Closed
gemmellr opened this issue Apr 24, 2024 · 6 comments · Fixed by #40249

Comments

@gemmellr
Copy link
Contributor

Describe the bug

When creating an initial project via code.quarkus.io using quarkus-qpid-jms, compiling the project under a native build then produces two stacktraces during the native build, about missing vert.x classes io.vertx.core.http.impl.Http1xServerResponse and io.vertx.core.parsetools.impl.RecordParserImpl, in apparent attempts to handle runtime-reinitialisation of them.

Quarkus-qpid-jms does not itself use vertx (thus why it isnt present), so it isnt clear what specifically is prompting the apparent attempts to handle runtime-reinitialisation of these classes. Things quarkus-qpid-jms does do which look to visibly alter the build command include: enabling https protocol support (for TLS), enabling security services (for some SASL mechs), and depending on quarkus-netty to handle things for native builds. Presumably something around these differences is causing it?

This happens with 3.8.x and 3.9.x, yet did not happen historically (not yet known when it started exactly) and it does not occur on 3.2.x. In this period, quarkus-qpid-jms itself essentially has not changed at all except the version of quarkus used and built against (and the recent graal-sdk -> nativeimage sdk dep switch).

As might be expected, the stacktraces disappear when vertx is present, so e.g the quarkus-qpid-jms tests and quickstart never showed these stacktraces as they all use quarkus-rest[easy-reactive] and thus do bring in the vertx classes.

The native build command + output:

[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] Running Quarkus native-image plugin on MANDREL 23.1.2.0 JDK 21.0.2+13-LTS
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildRunner] podman run --env LANG=C --rm --user 1000:1000 --userns=keep-id -v /home/rgemmell/workspace/testing/quarkus-3.8/3.8.4-upstream/code-with-quarkus-upstream/target/code-with-quarkus-1.0.0-SNAPSHOT-native-image-source-jar:/project:z --name build-native-SBEaq quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-21 -J-Dsun.nio.ch.maxUpdateArraySize=100 -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dlogging.initial-configurator.min-level=500 -J-Dio.netty.leakDetection.level=DISABLED -J-Dio.netty.allocator.maxOrder=3 -J-Duser.language=en -J-Duser.country=GB -J-Dfile.encoding=UTF-8 --features=io.quarkus.runner.Feature,io.quarkus.runtime.graal.DisableLoggingFeature -J--add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED -J--add-opens=java.base/java.text=ALL-UNNAMED -J--add-opens=java.base/java.io=ALL-UNNAMED -J--add-opens=java.base/java.lang.invoke=ALL-UNNAMED -J--add-opens=java.base/java.util=ALL-UNNAMED -H:+UnlockExperimentalVMOptions -H:BuildOutputJSONFile=code-with-quarkus-1.0.0-SNAPSHOT-runner-build-output-stats.json -H:-UnlockExperimentalVMOptions --strict-image-heap -H:+UnlockExperimentalVMOptions -H:+AllowFoldMethods -H:-UnlockExperimentalVMOptions -J-Djava.awt.headless=true --no-fallback --link-at-build-time -H:+UnlockExperimentalVMOptions -H:+ReportExceptionStackTraces -H:-UnlockExperimentalVMOptions -H:-AddAllCharsets --enable-url-protocols=http,https --enable-monitoring=heapdump -H:+UnlockExperimentalVMOptions -H:-UseServiceLoaderFeature -H:-UnlockExperimentalVMOptions -J--add-exports=org.graalvm.nativeimage/org.graalvm.nativeimage.impl=ALL-UNNAMED --exclude-config io\.netty\.netty-codec /META-INF/native-image/io\.netty/netty-codec/generated/handlers/reflect-config\.json --exclude-config io\.netty\.netty-handler /META-INF/native-image/io\.netty/netty-handler/generated/handlers/reflect-config\.json code-with-quarkus-1.0.0-SNAPSHOT-runner -jar code-with-quarkus-1.0.0-SNAPSHOT-runner.jar
========================================================================================================================
GraalVM Native Image: Generating 'code-with-quarkus-1.0.0-SNAPSHOT-runner' (executable)...
========================================================================================================================
For detailed information and explanations on the build output, visit:
https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/BuildOutput.md
------------------------------------------------------------------------------------------------------------------------
[1/8] Initializing...                                                                                    (2.2s @ 0.10GB)
 Java version: 21.0.2+13-LTS, vendor version: Mandrel-23.1.2.0-Final
 Graal compiler: optimization level: 2, target machine: x86-64-v3
 C compiler: gcc (redhat, x86_64, 8.5.0)
 Garbage collector: Serial GC (max heap size: 80% of RAM)
 3 user-specific feature(s):
 - com.oracle.svm.thirdparty.gson.GsonFeature
 - io.quarkus.runner.Feature: Auto-generated class by Quarkus from the existing extensions
 - io.quarkus.runtime.graal.DisableLoggingFeature: Disables INFO logging during the analysis phase
------------------------------------------------------------------------------------------------------------------------
 3 experimental option(s) unlocked:
 - '-H:+AllowFoldMethods' (origin(s): command line)
 - '-H:BuildOutputJSONFile' (origin(s): command line)
 - '-H:-UseServiceLoaderFeature' (origin(s): command line)
------------------------------------------------------------------------------------------------------------------------
Build resources:
 - 14.76GB of memory (75.6% of 19.53GB system memory, determined at start)
 - 8 thread(s) (100.0% of 8 available processor(s), determined at start)
java.lang.ClassNotFoundException: io.vertx.core.http.impl.Http1xServerResponse
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageClassLoader.loadClass(NativeImageClassLoader.java:652)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:534)
	at java.base/java.lang.Class.forName(Class.java:513)
	at io.quarkus.runner.Feature.runtimeReinitializedClasses(Unknown Source)
	at io.quarkus.runner.Feature.beforeAnalysis(Unknown Source)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$9(NativeImageGenerator.java:773)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:90)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:773)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:592)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:550)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:539)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:721)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:143)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:98)
java.lang.ClassNotFoundException: io.vertx.core.parsetools.impl.RecordParserImpl
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageClassLoader.loadClass(NativeImageClassLoader.java:652)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:534)
	at java.base/java.lang.Class.forName(Class.java:513)
	at io.quarkus.runner.Feature.runtimeReinitializedClasses(Unknown Source)
	at io.quarkus.runner.Feature.beforeAnalysis(Unknown Source)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$9(NativeImageGenerator.java:773)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:90)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:773)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:592)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:550)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:539)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:721)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:143)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:98)
[2/8] Performing analysis...  [*****]                                                                    (9.1s @ 1.00GB)
    8,971 reachable types   (85.5% of   10,487 total)
   12,016 reachable fields  (53.7% of   22,373 total)
   45,708 reachable methods (57.0% of   80,138 total)
    2,984 types,   106 fields, and 3,092 methods registered for reflection
       60 types,    60 fields, and    55 methods registered for JNI access
        4 native libraries: dl, pthread, rt, z
[3/8] Building universe...                                                                               (1.6s @ 1.13GB)
[4/8] Parsing methods...      [*]                                                                        (0.7s @ 1.22GB)
[5/8] Inlining methods...     [***]                                                                      (0.6s @ 1.30GB)
[6/8] Compiling methods...    [***]                                                                      (7.7s @ 0.75GB)
[7/8] Layouting methods...    [*]                                                                        (1.9s @ 1.28GB)
[8/8] Creating image...       [**]                                                                       (2.4s @ 1.67GB)
  18.91MB (47.18%) for code area:    29,354 compilation units
  20.79MB (51.85%) for image heap:  240,915 objects and 74 resources
 398.41kB ( 0.97%) for other data
  40.09MB in total
------------------------------------------------------------------------------------------------------------------------
Top 10 origins of code area:                                Top 10 object types in image heap:
  11.81MB java.base                                            5.87MB byte[] for code metadata
   1.32MB svm.jar (Native Image)                               3.19MB byte[] for java.lang.String
 728.89kB org.apache.qpid.proton-j-0.34.1.jar                  2.21MB java.lang.String
 562.44kB org.apache.qpid.qpid-jms-client-2.5.0.jar            2.12MB java.lang.Class
 434.53kB io.netty.netty-buffer-4.1.108.Final.jar            997.21kB byte[] for general heap data
 405.56kB code-with-quarkus-1.0.0-SNAPSHOT-runner.jar        770.95kB com.oracle.svm.core.hub.DynamicHubCompanion
 378.71kB io.netty.netty-common-4.1.108.Final.jar            534.73kB byte[] for reflection metadata
 359.62kB io.smallrye.config.smallrye-config-core-3.5.4.jar  433.84kB java.lang.String[]
 323.90kB jdk.crypto.ec                                      343.80kB java.lang.Object[]
 309.67kB o.j.logmanager.jboss-logmanager-3.0.4.Final.jar    324.69kB c.o.svm.core.hub.DynamicHub$ReflectionMetadata
   2.15MB for 45 more packages                                 4.07MB for 2276 more object types
------------------------------------------------------------------------------------------------------------------------
Recommendations:
 HEAP: Set max heap for improved and more predictable memory usage.
 CPU:  Enable more CPU features with '-march=native' for improved performance.
------------------------------------------------------------------------------------------------------------------------
                        2.1s (7.9% of total time) in 119 GCs | Peak RSS: 2.84GB | CPU load: 5.39
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
 /project/code-with-quarkus-1.0.0-SNAPSHOT-runner (executable)
 /project/code-with-quarkus-1.0.0-SNAPSHOT-runner-build-output-stats.json (build_info)
========================================================================================================================
Finished generating 'code-with-quarkus-1.0.0-SNAPSHOT-runner' in 26.6s.
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildRunner] podman run --env LANG=C --rm --user 1000:1000 --userns=keep-id -v /home/rgemmell/workspace/testing/quarkus-3.8/3.8.4-upstream/code-with-quarkus-upstream/target/code-with-quarkus-1.0.0-SNAPSHOT-native-image-source-jar:/project:z --entrypoint /bin/bash quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-21 -c objcopy --strip-debug code-with-quarkus-1.0.0-SNAPSHOT-runner
[INFO] [io.quarkus.deployment.QuarkusAugmentor] Quarkus augmentation completed in 31402ms

Commenting out the quarkus-qpid-jms extension, leaving just quarkus-arc (and quarkus-junit 5 as a test dep), the native build command alters slightly as discussed previously and it does not produce the same stacktraces during native build, suggesting perhaps one of the differences in the build command or the quarkus-netty dep is causing a side effect in quarkus components that provoke the stacktraces? :

[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] Running Quarkus native-image plugin on MANDREL 23.1.2.0 JDK 21.0.2+13-LTS
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildRunner] podman run --env LANG=C --rm --user 1000:1000 --userns=keep-id -v /home/rgemmell/workspace/testing/quarkus-3.8/3.8.4-upstream/code-with-quarkus-upstream/target/code-with-quarkus-1.0.0-SNAPSHOT-native-image-source-jar:/project:z --name build-native-ZPvIz quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-21 -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dlogging.initial-configurator.min-level=500 -J-Duser.language=en -J-Duser.country=GB -J-Dfile.encoding=UTF-8 --features=io.quarkus.runner.Feature,io.quarkus.runtime.graal.DisableLoggingFeature -J--add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED -J--add-opens=java.base/java.text=ALL-UNNAMED -J--add-opens=java.base/java.io=ALL-UNNAMED -J--add-opens=java.base/java.lang.invoke=ALL-UNNAMED -J--add-opens=java.base/java.util=ALL-UNNAMED -H:+UnlockExperimentalVMOptions -H:BuildOutputJSONFile=code-with-quarkus-1.0.0-SNAPSHOT-runner-build-output-stats.json -H:-UnlockExperimentalVMOptions --strict-image-heap -H:+UnlockExperimentalVMOptions -H:+AllowFoldMethods -H:-UnlockExperimentalVMOptions -J-Djava.awt.headless=true --no-fallback --link-at-build-time -H:+UnlockExperimentalVMOptions -H:+ReportExceptionStackTraces -H:-UnlockExperimentalVMOptions -H:-AddAllCharsets --enable-url-protocols=http --enable-monitoring=heapdump -H:+UnlockExperimentalVMOptions -H:-UseServiceLoaderFeature -H:-UnlockExperimentalVMOptions -J--add-exports=org.graalvm.nativeimage/org.graalvm.nativeimage.impl=ALL-UNNAMED code-with-quarkus-1.0.0-SNAPSHOT-runner -jar code-with-quarkus-1.0.0-SNAPSHOT-runner.jar
========================================================================================================================
GraalVM Native Image: Generating 'code-with-quarkus-1.0.0-SNAPSHOT-runner' (executable)...
========================================================================================================================
For detailed information and explanations on the build output, visit:
https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/BuildOutput.md
------------------------------------------------------------------------------------------------------------------------
[1/8] Initializing...                                                                                    (1.9s @ 0.13GB)
 Java version: 21.0.2+13-LTS, vendor version: Mandrel-23.1.2.0-Final
 Graal compiler: optimization level: 2, target machine: x86-64-v3
 C compiler: gcc (redhat, x86_64, 8.5.0)
 Garbage collector: Serial GC (max heap size: 80% of RAM)
 3 user-specific feature(s):
 - com.oracle.svm.thirdparty.gson.GsonFeature
 - io.quarkus.runner.Feature: Auto-generated class by Quarkus from the existing extensions
 - io.quarkus.runtime.graal.DisableLoggingFeature: Disables INFO logging during the analysis phase
------------------------------------------------------------------------------------------------------------------------
 3 experimental option(s) unlocked:
 - '-H:+AllowFoldMethods' (origin(s): command line)
 - '-H:BuildOutputJSONFile' (origin(s): command line)
 - '-H:-UseServiceLoaderFeature' (origin(s): command line)
------------------------------------------------------------------------------------------------------------------------
Build resources:
 - 14.76GB of memory (75.6% of 19.53GB system memory, determined at start)
 - 8 thread(s) (100.0% of 8 available processor(s), determined at start)
[2/8] Performing analysis...  [*****]                                                                    (7.4s @ 0.81GB)
    7,189 reachable types   (84.8% of    8,482 total)
    9,190 reachable fields  (54.8% of   16,765 total)
   34,018 reachable methods (56.4% of   60,342 total)
    2,301 types,    93 fields, and 2,185 methods registered for reflection
       60 types,    60 fields, and    55 methods registered for JNI access
        4 native libraries: dl, pthread, rt, z
[3/8] Building universe...                                                                               (1.2s @ 0.94GB)
[4/8] Parsing methods...      [*]                                                                        (0.9s @ 1.01GB)
[5/8] Inlining methods...     [****]                                                                     (0.6s @ 1.11GB)
[6/8] Compiling methods...    [***]                                                                      (6.8s @ 1.07GB)
[7/8] Layouting methods...    [*]                                                                        (1.7s @ 0.81GB)
[8/8] Creating image...       [*]                                                                        (2.0s @ 1.13GB)
  15.21MB (46.50%) for code area:    21,391 compilation units
  17.12MB (52.36%) for image heap:  207,796 objects and 55 resources
 383.45kB ( 1.15%) for other data
  32.70MB in total
------------------------------------------------------------------------------------------------------------------------
Top 10 origins of code area:                                Top 10 object types in image heap:
  11.22MB java.base                                            4.57MB byte[] for code metadata
   1.28MB svm.jar (Native Image)                               2.65MB byte[] for java.lang.String
 376.09kB code-with-quarkus-1.0.0-SNAPSHOT-runner.jar          1.86MB java.lang.String
 359.59kB io.smallrye.config.smallrye-config-core-3.5.4.jar    1.66MB java.lang.Class
 323.90kB jdk.crypto.ec                                      881.76kB byte[] for general heap data
 308.22kB o.j.logmanager.jboss-logmanager-3.0.4.Final.jar    617.80kB com.oracle.svm.core.hub.DynamicHubCompanion
 226.16kB jdk.zipfs                                          393.85kB byte[] for reflection metadata
 161.46kB io.quarkus.quarkus-core-3.8.4.jar                  363.64kB java.lang.String[]
 153.55kB io.quarkus.arc.arc-3.8.4.jar                       311.16kB java.lang.Object[]
 104.40kB java.naming                                        303.52kB java.util.HashMap$Node
 601.89kB for 27 more packages                                 3.57MB for 2012 more object types
------------------------------------------------------------------------------------------------------------------------
Recommendations:
 HEAP: Set max heap for improved and more predictable memory usage.
 CPU:  Enable more CPU features with '-march=native' for improved performance.
------------------------------------------------------------------------------------------------------------------------
                        1.9s (7.9% of total time) in 123 GCs | Peak RSS: 2.09GB | CPU load: 5.47
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
 /project/code-with-quarkus-1.0.0-SNAPSHOT-runner (executable)
 /project/code-with-quarkus-1.0.0-SNAPSHOT-runner-build-output-stats.json (build_info)
========================================================================================================================
Finished generating 'code-with-quarkus-1.0.0-SNAPSHOT-runner' in 23.0s.
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildRunner] podman run --env LANG=C --rm --user 1000:1000 --userns=keep-id -v /home/rgemmell/workspace/testing/quarkus-3.8/3.8.4-upstream/code-with-quarkus-upstream/target/code-with-quarkus-1.0.0-SNAPSHOT-native-image-source-jar:/project:z --entrypoint /bin/bash quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-21 -c objcopy --strip-debug code-with-quarkus-1.0.0-SNAPSHOT-runner
[INFO] [io.quarkus.deployment.QuarkusAugmentor] Quarkus augmentation completed in 27656ms

Expected behavior

No stacktraces about missing classes that arent being used by extension.

Actual behavior

2 stacktraces printed about missing classes that aren't being used by extension.

How to Reproduce?

  1. Created base project from code.quarkus.io using quarus-qpid-jms, e.g: wget -O code-with-quarkus-test.zip 'https://code.quarkus.io/d?e=org.amqphub.quarkus%3Aquarkus-qpid-jms'
  2. Extract it
  3. Native build with e.g "mvn clean verify -Pnative" and observe stacktraces printed.

Output of uname -a or ver

No response

Output of java -version

No response

Mandrel or GraalVM version (if different from Java)

No response

Quarkus version or git rev

No response

Build tool (ie. output of mvnw --version or gradlew --version)

No response

Additional information

No response

Copy link

quarkus-bot bot commented Apr 24, 2024

/cc @Karm (mandrel), @brunobat (opentelemetry,tracing), @galderz (mandrel), @radcortez (opentelemetry,tracing), @zakkak (mandrel,native-image)

@zakkak
Copy link
Contributor

zakkak commented Apr 24, 2024

The regression was introduced in Quarkus 3.7 by #37633

It looks like we should make the registration of these classes for re-initialization conditional on their presence or move them to a different processor.

@zakkak zakkak self-assigned this Apr 24, 2024
zakkak added a commit to zakkak/quarkus that referenced this issue Apr 24, 2024
Vert.x is not a dependency of netty, meaning that the classes may not
always be on the classpath.

Fixes quarkusio#40243
zakkak added a commit to zakkak/quarkus that referenced this issue Apr 24, 2024
Vert.x is not a dependency of netty, meaning that the classes may not
always be on the classpath.

Fixes quarkusio#40243

Supersedes quarkusio#40248
@quarkus-bot quarkus-bot bot added this to the 3.11 - main milestone Apr 24, 2024
@gemmellr
Copy link
Contributor Author

Thanks @zakkak , tried it out again with last nights snapshot build for main following your fix, stacktraces are gone now.

@zakkak
Copy link
Contributor

zakkak commented Apr 25, 2024

Great, thanks for reporting the issue and testing the fix @gemmellr !

@gemmellr
Copy link
Contributor Author

My initial report wasnt quite accurate...earlier 3.2.x didnt show this, but 3.2.12 actually does as it recently had the same changes backported as part of the vertx 4.4.9 update in #39788:

https://github.com/quarkusio/quarkus/blob/3.2.12.Final/extensions/netty/deployment/src/main/java/io/quarkus/netty/deployment/NettyProcessor.java#L174-L181

Can #40249 please be marked for backport to 3.2 as well?

@zakkak
Copy link
Contributor

zakkak commented Apr 25, 2024

Done

@gsmet gsmet modified the milestones: 3.11 - main, 3.9.5 Apr 26, 2024
gsmet pushed a commit to gsmet/quarkus that referenced this issue Apr 26, 2024
Vert.x is not a dependency of netty, meaning that the classes may not
always be on the classpath.

Fixes quarkusio#40243

Supersedes quarkusio#40248

(cherry picked from commit c610a8b)
poldinik pushed a commit to poldinik/quarkus that referenced this issue Apr 29, 2024
Vert.x is not a dependency of netty, meaning that the classes may not
always be on the classpath.

Fixes quarkusio#40243

Supersedes quarkusio#40248
gsmet pushed a commit to gsmet/quarkus that referenced this issue May 10, 2024
Vert.x is not a dependency of netty, meaning that the classes may not
always be on the classpath.

Fixes quarkusio#40243

Supersedes quarkusio#40248

(cherry picked from commit c610a8b)
@gsmet gsmet modified the milestones: 3.9.5, 3.8.5 May 16, 2024
gsmet pushed a commit to gsmet/quarkus that referenced this issue May 22, 2024
Vert.x is not a dependency of netty, meaning that the classes may not
always be on the classpath.

Fixes quarkusio#40243

Supersedes quarkusio#40248

(cherry picked from commit c610a8b)
gsmet pushed a commit to gsmet/quarkus that referenced this issue May 22, 2024
Vert.x is not a dependency of netty, meaning that the classes may not
always be on the classpath.

Fixes quarkusio#40243

Supersedes quarkusio#40248

(cherry picked from commit c610a8b)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment