Skip to content

quarkus-hibernate and quarkus-mongodb-client incompatibility #8785

@pplr

Description

@pplr

Describe the bug
Application with quarkus-hibernate and quarkus-mongodb-client extensions fails to native build.

Expected behavior
Native build should succeed.

Actual behavior
Native build fails:

[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] /home/pplr/opt/graalvm-ce-java8-19.3.1/jre/bin/native-image -J-DCoordinatorEnvironmentBean.transactionStatusManagerEnable=false -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dsun.nio.ch.maxUpdateArraySize=100 -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=1 -J-Duser.language=en -J-Dfile.encoding=UTF-8 --initialize-at-build-time= -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime -H:+JNI -jar quarkus-hibernate-mongo-1.0-SNAPSHOT-runner.jar -H:FallbackThreshold=0 -H:+ReportExceptionStackTraces -H:-AddAllCharsets -H:-IncludeAllTimeZones -H:EnableURLProtocols=http,https --enable-all-security-services -H:NativeLinkerOption=-no-pie --no-server -H:-UseServiceLoaderFeature -H:+StackTrace quarkus-hibernate-mongo-1.0-SNAPSHOT-runner
[quarkus-hibernate-mongo-1.0-SNAPSHOT-runner:342274]    classlist:  14,336.45 ms
[quarkus-hibernate-mongo-1.0-SNAPSHOT-runner:342274]        (cap):     864.35 ms
[quarkus-hibernate-mongo-1.0-SNAPSHOT-runner:342274]        setup:   2,812.88 ms
10:18:11,329 INFO  [org.hib.Version] HHH000412: Hibernate ORM core version 5.4.14.Final
10:18:11,339 INFO  [org.hib.ann.com.Version] HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
10:18:11,412 INFO  [org.hib.dia.Dialect] HHH000400: Using dialect: org.hibernate.dialect.MariaDB103Dialect
10:18:12,599 INFO  [org.jbo.threads] JBoss Threads version 3.0.1.Final
[quarkus-hibernate-mongo-1.0-SNAPSHOT-runner:342274]     analysis:  34,122.09 ms
Fatal error: com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing com.oracle.svm.reflect.ClassLoader_findLibrary_147c61d6d7f79efa3da939184845f679c7833707.invoke(java.lang.Object, java.lang.Object[]) 
Parsing context:
        parsing java.lang.reflect.Method.invoke(Method.java:498)
        parsing javax.enterprise.util.AnnotationLiteral.invoke(AnnotationLiteral.java:288)
        parsing javax.enterprise.util.AnnotationLiteral.getMemberValue(AnnotationLiteral.java:276)
        parsing javax.enterprise.util.AnnotationLiteral.equals(AnnotationLiteral.java:198)
        parsing java.util.TreeMap.valEquals(TreeMap.java:1303)
        parsing java.util.TreeMap$Entry.equals(TreeMap.java:2107)
        parsing org.graalvm.collections.EconomicMapImpl.compareKeys(EconomicMapImpl.java:276)
        parsing org.graalvm.collections.EconomicMapImpl.findLinear(EconomicMapImpl.java:263)
        parsing org.graalvm.collections.EconomicMapImpl.removeKey(EconomicMapImpl.java:632)
        parsing org.graalvm.compiler.options.ModifiableOptionValues.update(ModifiableOptionValues.java:99)
        parsing com.oracle.svm.core.option.RuntimeOptionParser.parse(RuntimeOptionParser.java:164)
        parsing com.oracle.svm.core.option.RuntimeOptionParser.parseAndConsumeAllOptions(RuntimeOptionParser.java:77)
        parsing com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:132)
        parsing com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186)
        parsing com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)

        at com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:138)
        at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:327)
        at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:300)
        at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:107)
        at com.oracle.graal.pointsto.DefaultAnalysisPolicy$DefaultVirtualInvokeTypeFlow.onObservedUpdate(DefaultAnalysisPolicy.java:191)
        at com.oracle.graal.pointsto.flow.TypeFlow.notifyObservers(TypeFlow.java:343)
        at com.oracle.graal.pointsto.flow.TypeFlow.update(TypeFlow.java:385)
        at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:511)
        at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:171)
        at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method java.lang.ClassLoader.findLibrary(String) is reachable: The declaring class of this element has been substituted, but this element is not present in the substitution class
To diagnose the issue, you can add the option --report-unsupported-elements-at-runtime. The unsupported element is then reported at run time when it is accessed the first time.
        at com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.lookup(AnnotationSubstitutionProcessor.java:183)
        at com.oracle.graal.pointsto.infrastructure.SubstitutionProcessor$ChainedSubstitutionProcessor.lookup(SubstitutionProcessor.java:128)
        at com.oracle.graal.pointsto.infrastructure.SubstitutionProcessor$ChainedSubstitutionProcessor.lookup(SubstitutionProcessor.java:128)
        at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:397)
        at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookup(AnalysisUniverse.java:377)
        at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookup(AnalysisUniverse.java:75)
        at com.oracle.graal.pointsto.infrastructure.UniverseMetaAccess.lookupJavaMethod(UniverseMetaAccess.java:93)
        at com.oracle.graal.pointsto.meta.AnalysisMetaAccess.lookupJavaMethod(AnalysisMetaAccess.java:66)
        at com.oracle.graal.pointsto.meta.AnalysisMetaAccess.lookupJavaMethod(AnalysisMetaAccess.java:39)
        at com.oracle.svm.reflect.hosted.ReflectionSubstitutionType$ReflectiveInvokeMethod.buildGraph(ReflectionSubstitutionType.java:511)
        at com.oracle.graal.pointsto.meta.AnalysisMethod.buildGraph(AnalysisMethod.java:319)
        at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:185)
        at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:340)
        at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:310)
        ... 12 more
Error: Image build request failed with exit status 1

To Reproduce
Steps to reproduce the behavior:

  1. Start a quarkus project
  2. Add following extensions: quarkus-resteasy, quarkus-hibernate-orm, quarkus-jdbc-mariadb, quarkus-mongodb-client
  3. Add quarkus.datasource.db-kind=mariadb in application.properties
  4. Create a simple resteasy resource using entity manager and another using mongo client
  5. ./mvnw -P native package

I pushed a reproducer here: https://github.com/pplr/quarkus-hibernate-mongo
See failing build logs:
https://pipelines.actions.githubusercontent.com/rWR6fPGqgqSSKlp9NXyPLzuUURHEfKBKxzCijG0Wnr2WVVsbQk/_apis/pipelines/1/runs/2/signedlogcontent/3?urlExpires=2020-04-23T08%3A48%3A38.7723655Z&urlSigningMethod=HMACV1&urlSignature=Wbn4E1MluNDMNAvt0uZLIKQdnJCDc71PGUsNkmlc%2FSw%3D

Configuration

quarkus.datasource.db-kind=mariadb

Environment (please complete the following information):

  • Output of uname -a or ver: Linux pplr-xps 5.5.9-arch1-2 #1 SMP PREEMPT Thu, 12 Mar 2020 23:01:33 +0000 x86_64 GNU/Linux
  • Output of java -version:
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b06)
OpenJDK 64-Bit GraalVM CE 19.3.1 (build 25.242-b06-jvmci-19.3-b07, mixed mode)
  • Quarkus version or git rev: 1.3.2.Final
  • Build tool (ie. output of mvnw --version or gradlew --version):
Maven home: /home/pplr/.m2/wrapper/dists/apache-maven-3.6.3-bin/1iopthnavndlasol9gbrbg6bf2/apache-maven-3.6.3
Java version: 1.8.0_242, vendor: Oracle Corporation, runtime: /home/pplr/opt/graalvm-ce-java8-19.3.1/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.5.9-arch1-2", arch: "amd64", family: "unix"

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions