graalvm / mandrel

Mandrel is a downstream distribution of the GraalVM community edition. Mandrel's main goal is to provide a native-image release specifically to support Quarkus.
Other
396 stars 15 forks source link

[23.0] Quarkus integration test jpa-oracle fails with latest Mandrel 23.0 build with JDK 17.0.13+2 (ea) #783

Closed jerboaa closed 3 months ago

jerboaa commented 3 months ago

Description

We see CI failures related to Oracle JPA with the latest Mandrel 23.0 builds with JDK 17.0.13+2 ea builds that look like this:

[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildRunner] /disk/graal/upstream-sources/graalvm/mandrel-build/bin/native-image -J-DCoordinatorEnvironmentBean.transactionStatusManagerEnable=false -J-Dsun.nio.ch.maxUpdateArraySize=100 -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dlogging.initial-configurator.min-level=500 -J-Dvertx.logger-delegate-factory-class-name=io.quarkus.vertx.core.runtime.VertxLogDelegateFactory -J-Dvertx.disableDnsResolver=true -J-Dio.netty.leakDetection.level=DISABLED -J-Dio.netty.allocator.maxOrder=3 -J-Duser.language=en -J-Duser.country=US -J-Dfile.encoding=UTF-8 --features=oracle.jdbc.nativeimage.NativeImageFeature,io.quarkus.runner.Feature,io.quarkus.runtime.graal.DisableLoggingFeature,io.quarkus.caffeine.runtime.graal.CacheConstructorsFeature,org.hibernate.graalvm.internal.GraalVMStaticFeature,io.quarkus.jdbc.postgresql.runtime.graal.SQLXMLFeature,io.quarkus.hibernate.orm.runtime.graal.DisableLoggingFeature -J--add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED -J--add-exports=java.security.jgss/sun.security.jgss=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:PrintAnalysisCallTreeType=CSV -H:BuildOutputJSONFile=quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner-build-output-stats.json -H:+GenerateBuildArtifactsFile -H:+AllowFoldMethods -J-Djava.awt.headless=true --no-fallback -H:+ReportExceptionStackTraces -H:-AddAllCharsets --enable-url-protocols=http,https -H:NativeLinkerOption=-no-pie --enable-monitoring=heapdump -H:-UseServiceLoaderFeature -H:+StackTrace -J--add-exports=org.graalvm.sdk/org.graalvm.nativeimage.impl=ALL-UNNAMED --exclude-config com\.oracle\.database\.jdbc /META-INF/native-image/native-image\.properties --exclude-config com\.oracle\.database\.jdbc /META-INF/native-image/reflect-config\.json --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 quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner -jar quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner.jar
18:54:00.000 Oracle Database:2024-08-21T16:54:00.614333+00:00
18:54:00.000 Oracle Database:TABLE SYS.WRP$_REPORTS: ADDED AUTOLIST FRAGMENT SYS_P402 (3) VALUES (( 1448074879, TO_DATE(' 2024-08-19 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian') ))
18:54:00.000 Oracle Database:TABLE SYS.WRP$_REPORTS_DETAILS: ADDED AUTOLIST FRAGMENT SYS_P403 (3) VALUES (( 1448074879, TO_DATE(' 2024-08-19 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian') ))
18:54:00.000 Oracle Database:TABLE SYS.WRP$_REPORTS_TIME_BANDS: ADDED AUTOLIST FRAGMENT SYS_P406 (3) VALUES (( 1448074879, TO_DATE(' 2024-08-19 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian') ))
========================================================================================================================
GraalVM Native Image: Generating 'quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner' (executable)...
========================================================================================================================
Warning: Method io.quarkus.runtime.configuration.InetSocketAddressConverter.provider() not found.
Warning: Method io.quarkus.runtime.configuration.CharsetConverter.provider() not found.
Warning: Method io.quarkus.runtime.configuration.CidrAddressConverter.provider() not found.
Warning: Method io.quarkus.runtime.configuration.InetAddressConverter.provider() not found.
Warning: Method io.quarkus.runtime.configuration.RegexConverter.provider() not found.
Warning: Method io.quarkus.runtime.configuration.PathConverter.provider() not found.
Warning: Method io.quarkus.runtime.configuration.DurationConverter.provider() not found.
Warning: Method io.quarkus.runtime.configuration.MemorySizeConverter.provider() not found.
Warning: Method io.quarkus.runtime.configuration.LocaleConverter.provider() not found.
Warning: Method io.quarkus.runtime.configuration.ZoneIdConverter.provider() not found.
Warning: Method io.quarkus.runtime.logging.LevelConverter.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.TrustedProxyCheckPartConverter.provider() not found.
Warning: Method io.quarkus.resteasy.reactive.common.runtime.ResteasyReactiveConfigFallbackInterceptor.provider() not found.
Warning: Method io.quarkus.resteasy.reactive.common.runtime.ResteasyReactiveConfigRelocateInterceptor.provider() not found.
Warning: Method org.jboss.resteasy.reactive.common.jaxrs.RuntimeDelegateImpl.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.RemoteIPAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.LocalIPAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.RequestProtocolAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.LocalPortAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.IdentUsernameAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.RequestMethodAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.QueryStringAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.RequestLineAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.BytesSentAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.DateTimeAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.RemoteUserAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.RequestURLAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.ThreadNameAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.LocalServerNameAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.RequestHeaderAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.ResponseHeaderAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.CookieAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.ResponseCodeAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.QueryParameterAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.SslClientCertAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.SslCipherAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.SslSessionIdAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.ResponseTimeAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.TransportProtocolAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.RequestSchemeAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.SecureExchangeAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.RemoteHostAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.RequestPathAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.NullAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.AllRequestHeadersAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.ExchangeDataAttribute$Builder.provider() not found.
Warning: Method io.quarkus.vertx.http.runtime.attribute.VertxMDCDataAttribute$Builder.provider() not found.
Warning: Method io.quarkus.bootstrap.logging.InitialConfigurator.provider() not found.
Warning: Method io.smallrye.config.SmallRyeConfigProviderResolver.provider() not found.
[1/8] Initializing...                                                                                    (6.1s @ 0.26GB)
 Java version: 17.0.13-beta+2-ea, vendor version: Mandrel-23.0.6-dev
 Graal compiler: optimization level: 2, target machine: x86-64-v3
 C compiler: gcc (redhat, x86_64, 13.3.1)
 Garbage collector: Serial GC (max heap size: 80% of RAM)
 8 user-specific feature(s)
 - io.quarkus.caffeine.runtime.graal.CacheConstructorsFeature
 - io.quarkus.hibernate.orm.runtime.graal.DisableLoggingFeature: Disables INFO logging during the analysis phase
 - io.quarkus.jdbc.postgresql.runtime.graal.SQLXMLFeature
 - 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
 - oracle.jdbc.nativeimage.NativeImageFeature
 - org.eclipse.angus.activation.nativeimage.AngusActivationFeature
 - org.hibernate.graalvm.internal.GraalVMStaticFeature: Hibernate ORM's static reflection registrations for GraalVM
[2/8] Performing analysis...  [18:54:08,217 INFO  [org.hib.orm.con.pooling] HHH10001005: Database info:
    Database JDBC URL [undefined/unknown]
    Database driver: undefined/unknown
    Database version: 19.0
    Autocommit mode: undefined/unknown
    Isolation level: <unknown>
    Minimum pool size: undefined/unknown
    Maximum pool size: undefined/unknown
*]                                                                       (50.9s @ 5.24GB)
  22,943 (90.03%) of 25,485 types reachable
  37,694 (54.17%) of 69,585 fields reachable
 118,488 (53.26%) of 222,483 methods reachable
   7,211 types,   541 fields, and 4,454 methods registered for reflection
# Printing call tree csv file for vm entry point to: /home/sgehwolf/Documents/openjdk/quarkus/quarkus-source/integration-tests/jpa-oracle/target/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-native-image-source-jar/reports/call_tree_vm_quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner_20240821_185508.csv
# Printing call tree csv file for methods to: /home/sgehwolf/Documents/openjdk/quarkus/quarkus-source/integration-tests/jpa-oracle/target/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-native-image-source-jar/reports/call_tree_methods_quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner_20240821_185508.csv
# Printing call tree csv file for virtual methods to: /home/sgehwolf/Documents/openjdk/quarkus/quarkus-source/integration-tests/jpa-oracle/target/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-native-image-source-jar/reports/call_tree_virtual_methods_quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner_20240821_185508.csv
# Printing call tree csv file for entry points to: /home/sgehwolf/Documents/openjdk/quarkus/quarkus-source/integration-tests/jpa-oracle/target/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-native-image-source-jar/reports/call_tree_entry_points_quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner_20240821_185508.csv
# Printing call tree csv file for direct edges to: /home/sgehwolf/Documents/openjdk/quarkus/quarkus-source/integration-tests/jpa-oracle/target/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-native-image-source-jar/reports/call_tree_direct_edges_quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner_20240821_185508.csv
# Printing call tree csv file for overriden by edges to: /home/sgehwolf/Documents/openjdk/quarkus/quarkus-source/integration-tests/jpa-oracle/target/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-native-image-source-jar/reports/call_tree_override_by_edges_quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner_20240821_185508.csv
# Printing call tree csv file for virtual edges to: /home/sgehwolf/Documents/openjdk/quarkus/quarkus-source/integration-tests/jpa-oracle/target/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-native-image-source-jar/reports/call_tree_virtual_edges_quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner_20240821_185508.csv
# Printing list of used methods to: /home/sgehwolf/Documents/openjdk/quarkus/quarkus-source/integration-tests/jpa-oracle/target/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-native-image-source-jar/reports/used_methods_quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner_20240821_185509.txt
# Printing list of used classes to: /home/sgehwolf/Documents/openjdk/quarkus/quarkus-source/integration-tests/jpa-oracle/target/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-native-image-source-jar/reports/used_classes_quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner_20240821_185510.txt
# Printing list of used packages to: /home/sgehwolf/Documents/openjdk/quarkus/quarkus-source/integration-tests/jpa-oracle/target/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-native-image-source-jar/reports/used_packages_quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner_20240821_185510.txt

Error: Classes that should be initialized at run time got initialized during image building:
 oracle.jdbc.diagnostics.OracleDiagnosticsMXBean the class was requested to be initialized at run time (from feature io.quarkus.runner.Feature.beforeAnalysis with 'OracleDiagnosticsMXBean.class'). To see why oracle.jdbc.diagnostics.OracleDiagnosticsMXBean got initialized use --trace-class-initialization=oracle.jdbc.diagnostics.OracleDiagnosticsMXBean
oracle.jdbc.diagnostics.CommonDiagnosable the class was requested to be initialized at run time (from feature io.quarkus.runner.Feature.beforeAnalysis with 'CommonDiagnosable.class'). To see why oracle.jdbc.diagnostics.CommonDiagnosable got initialized use --trace-class-initialization=oracle.jdbc.diagnostics.CommonDiagnosable
oracle.jdbc.diagnostics.Diagnostic the class was requested to be initialized at run time (from feature io.quarkus.runner.Feature.beforeAnalysis with 'Diagnostic.class'). To see why oracle.jdbc.diagnostics.Diagnostic got initialized use --trace-class-initialization=oracle.jdbc.diagnostics.Diagnostic
To see how the classes got initialized, use --trace-class-initialization=oracle.jdbc.diagnostics.OracleDiagnosticsMXBean,oracle.jdbc.diagnostics.CommonDiagnosable,oracle.jdbc.diagnostics.Diagnostic
com.oracle.svm.core.util.UserError$UserException: Classes that should be initialized at run time got initialized during image building:
 oracle.jdbc.diagnostics.OracleDiagnosticsMXBean the class was requested to be initialized at run time (from feature io.quarkus.runner.Feature.beforeAnalysis with 'OracleDiagnosticsMXBean.class'). To see why oracle.jdbc.diagnostics.OracleDiagnosticsMXBean got initialized use --trace-class-initialization=oracle.jdbc.diagnostics.OracleDiagnosticsMXBean
oracle.jdbc.diagnostics.CommonDiagnosable the class was requested to be initialized at run time (from feature io.quarkus.runner.Feature.beforeAnalysis with 'CommonDiagnosable.class'). To see why oracle.jdbc.diagnostics.CommonDiagnosable got initialized use --trace-class-initialization=oracle.jdbc.diagnostics.CommonDiagnosable
oracle.jdbc.diagnostics.Diagnostic the class was requested to be initialized at run time (from feature io.quarkus.runner.Feature.beforeAnalysis with 'Diagnostic.class'). To see why oracle.jdbc.diagnostics.Diagnostic got initialized use --trace-class-initialization=oracle.jdbc.diagnostics.Diagnostic
To see how the classes got initialized, use --trace-class-initialization=oracle.jdbc.diagnostics.OracleDiagnosticsMXBean,oracle.jdbc.diagnostics.CommonDiagnosable,oracle.jdbc.diagnostics.Diagnostic
    at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.UserError.abort(UserError.java:73)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ProvenSafeClassInitializationSupport.checkDelayedInitialization(ProvenSafeClassInitializationSupport.java:277)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ClassInitializationFeature.duringAnalysis(ClassInitializationFeature.java:164)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$10(NativeImageGenerator.java:770)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:89)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$11(NativeImageGenerator.java:770)
    at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.AbstractAnalysisEngine.runAnalysis(AbstractAnalysisEngine.java:179)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:767)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:582)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:539)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:408)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:612)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:134)
    at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:94)
------------------------------------------------------------------------------------------------------------------------
                        4.0s (5.8% of total time) in 33 GCs | Peak RSS: 7.69GB | CPU load: 8.68
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
 /home/sgehwolf/Documents/openjdk/quarkus/quarkus-source/integration-tests/jpa-oracle/target/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-native-image-source-jar/build-artifacts.json (build_info)
 /home/sgehwolf/Documents/openjdk/quarkus/quarkus-source/integration-tests/jpa-oracle/target/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-native-image-source-jar/quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner-build-output-stats.json (build_info)
========================================================================================================================
Finished generating 'quarkus-integration-test-jpa-oracle-999-SNAPSHOT-runner' in 1m 8s.

See also: https://github.com/graalvm/mandrel/actions/runs/10491620348/job/29062602276#step:12:4811

How To Reproduce

Steps to reproduce the behavior:

  1. clone quarkus sources (revision 698f5bf484049fe9fdd52de302a78ae8ed02ac63) and build.
  2. Build latest mandrel 23.0 release tree with JDK 17.0.13+2
  3. Run quarkus native integration tests jpa-oracle

Expected behavior

Integration test passes.

Additional context

Same happened on July 27 with JDK 17.0.12 GA here: https://github.com/graalvm/mandrel/actions/runs/10119296822/job/27987949919#step:12:4723

Likely quarkus related, but filing it here for now.

zakkak commented 3 months ago

This is indeed a Quarkus issue. The issue is reproducible with quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-17 as well.

./mvnw -Dnative -pl integration-tests/jpa-oracle clean package -Dnative.surefire.skip -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-17
zakkak commented 3 months ago

Most probably related to https://github.com/quarkusio/quarkus/pull/41998

jerboaa commented 3 months ago

@zakkak Feel free to look into it and assign it to yourself. I haven't done anything on it yet. Affects quarkus main only. Quarkus 3.2 is OK.

zakkak commented 3 months ago

I think the right thing to do is to close this as "not planned". The minimum supported version on Quarkus main is 23.1, see https://github.com/quarkusio/quarkus/blob/77654a9b565e47f473488eb4b2a2ea3c3b97aefe/core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/GraalVM.java#L206-L211, so I don't expect anyone to put effort in fixing this.

We should probably also disable the test at this point. WDYT?

jerboaa commented 3 months ago

I think the right thing to do is to close this as "not planned". The minimum supported version on Quarkus main is 23.1, see https://github.com/quarkusio/quarkus/blob/77654a9b565e47f473488eb4b2a2ea3c3b97aefe/core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/GraalVM.java#L206-L211, so I don't expect anyone to put effort in fixing this.

We should probably also disable the test at this point. WDYT?

OK, we have testing of Quarkus 3.2 with JDK 17 EA, which is sufficient.

jerboaa commented 3 months ago

Closing this as not planned since Mandrel 23.0 is targetting Quarkus 3.2 and there will only be one more release in October before it's phased out.