quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.68k stars 2.65k forks source link

Provide a mongo-spark extension #10802

Open askalee90 opened 4 years ago

askalee90 commented 4 years ago

Description Currently when one tries to build a native-image using mongo-spark, one gets the following error:

mvn -f /usr/src/app/pom.xml -s /usr/src/app/settings.xml -Pnative package Added --initialize-at-run-time=com.mongodb.client.internal.Crypt and still failed.

Error: Unsupported features in 12 methods Detailed message: Error: Detected a started Thread in the image heap. Threads running in the image generator are no longer running at image run time. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image run time by using the option --initialize-at-build-time=. Or you can write your own initialization methods and call them explicitly from your main entry point. Trace: object java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue object java.util.concurrent.ScheduledThreadPoolExecutor object java.util.concurrent.Executors$DelegatedScheduledExecutorService object com.mongodb.spark.connection.MongoClientCache object com.mongodb.spark.MongoConnector$ method com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply() Call path from entry point to com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(): at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.AnalysisException.getMessage(AnalysisException.scala:46) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1148) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: Detected a started Thread in the image heap. Threads running in the image generator are no longer running at image run time. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image run time by using the option --initialize-at-build-time=. Or you can write your own initialization methods and call them explicitly from your main entry point. Trace: object java.util.concurrent.ThreadPoolExecutor$Worker object java.util.HashMap$Node object java.util.HashMap$Node[] object java.util.HashMap object java.util.HashSet object java.util.concurrent.ScheduledThreadPoolExecutor object java.util.concurrent.Executors$DelegatedScheduledExecutorService object com.mongodb.spark.connection.MongoClientCache object com.mongodb.spark.MongoConnector$ method com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply() Call path from entry point to com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(): at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.AnalysisException.getMessage(AnalysisException.scala:46) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1148) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: Detected a started Thread in the image heap. Threads running in the image generator are no longer running at image run time. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image run time by using the option --initialize-at-build-time=. Or you can write your own initialization methods and call them explicitly from your main entry point. Trace: object java.util.concurrent.locks.AbstractQueuedSynchronizer$Node object java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject object java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue object java.util.concurrent.ScheduledThreadPoolExecutor object java.util.concurrent.Executors$DelegatedScheduledExecutorService object com.mongodb.spark.connection.MongoClientCache object com.mongodb.spark.MongoConnector$ method com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply() Call path from entry point to com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(): at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.AnalysisException.getMessage(AnalysisException.scala:46) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1148) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: No instances of java.net.Inet4Address are allowed in the image heap as this class should be initialized at image runtime. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. Trace: object org.apache.spark.util.Utils$ method org.apache.spark.sql.Dataset$$anonfun$11$$anonfun$apply$5.apply(Tuple2) Call path from entry point to org.apache.spark.sql.Dataset$$anonfun$11$$anonfun$apply$5.apply(Tuple2): at org.apache.spark.sql.Dataset$$anonfun$11$$anonfun$apply$5.apply(Dataset.scala:313) at org.apache.spark.sql.Dataset$$anonfun$11$$anonfun$apply$5.apply(Dataset.scala:313) at scala.collection.immutable.Stream.map(Stream.scala:418) at org.apache.spark.deploy.worker.ExecutorRunner.org$apache$spark$deploy$worker$ExecutorRunner$$fetchAndRunExecutor(ExecutorRunner.scala:145) at org.apache.spark.deploy.worker.ExecutorRunner$$anon$1.run(ExecutorRunner.scala:73) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: No instances of sun.security.provider.NativePRNG are allowed in the image heap as this class should be initialized at image runtime. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. Trace: object java.security.SecureRandom object sun.security.ssl.SSLContextImpl$DefaultSSLContext object sun.security.ssl.SSLSocketFactoryImpl method com.mongodb.MongoClientOptions.getSocketFactory() Call path from entry point to com.mongodb.MongoClientOptions.getSocketFactory(): at com.mongodb.MongoClientOptions.getSocketFactory(MongoClientOptions.java:718) at com.mongodb.Mongo.createCluster(Mongo.java:757) at com.mongodb.Mongo.createCluster(Mongo.java:728) at com.mongodb.Mongo.(Mongo.java:313) at com.mongodb.MongoClient.(MongoClient.java:342) at com.mongodb.spark.connection.DefaultMongoClientFactory.create(DefaultMongoClientFactory.scala:49) at com.mongodb.spark.connection.MongoClientCache.acquire(MongoClientCache.scala:55) at com.mongodb.spark.MongoConnector.acquireClient(MongoConnector.scala:242) at com.mongodb.spark.MongoConnector.withMongoClientDo(MongoConnector.scala:155) at com.mongodb.spark.MongoConnector.withDatabaseDo(MongoConnector.scala:174) at com.oracle.svm.reflect.MongoConnector_withDatabaseDo_5de8b2c3dd005217a8b2f13c62827cc77c08c2ed_323.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:566) at java.util.ServiceLoader$ProviderImpl.invokeFactoryMethod(ServiceLoader.java:736) at java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:719) at com.oracle.svm.core.jdk.SystemPropertiesSupport.initializeLazyValue(SystemPropertiesSupport.java:188) at com.oracle.svm.core.jdk.SystemPropertiesSupport.getProperty(SystemPropertiesSupport.java:141) at com.oracle.svm.core.jdk.Target_java_lang_System.getProperty(JavaLangSubstitutions.java:342) at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_ARRAY:Ljava_lang_System_2_0002egetProperty_00028Ljava_lang_String_2_00029Ljava_lang_String_2(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved method during parsing: com.mongodb.client.internal.Crypt.close(). To diagnose the issue you can use the --allow-incomplete-classpath option. The missing method is then reported at run time when it is accessed the first time. Trace: at parsing com.mongodb.client.internal.MongoClientDelegate.close(MongoClientDelegate.java:130) Call path from entry point to com.mongodb.client.internal.MongoClientDelegate.close(): at com.mongodb.client.internal.MongoClientDelegate.close(MongoClientDelegate.java:129) at com.mongodb.client.internal.MongoClientImpl.close(MongoClientImpl.java:134) at io.quarkus.mongodb.runtime.MongoClientRecorder.close(MongoClientRecorder.java:74) at io.quarkus.mongodb.runtime.MongoClientRecorder$$Lambda$639/0x000000084645a840.run(Unknown Source) at com.oracle.svm.core.jdk.RuntimeSupport.executeHooks(RuntimeSupport.java:144) at com.oracle.svm.core.jdk.RuntimeSupport.executeStartupHooks(RuntimeSupport.java:89) at com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:143) at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186) at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved method during parsing: com.mongodb.client.internal.Crypt.encrypt(java.lang.String, org.bson.RawBsonDocument). To diagnose the issue you can use the --allow-incomplete-classpath option. The missing method is then reported at run time when it is accessed the first time. Trace: at parsing com.mongodb.client.internal.CryptConnection.command(CryptConnection.java:113) Call path from entry point to com.mongodb.client.internal.CryptConnection.command(String, BsonDocument, FieldNameValidator, ReadPreference, Decoder, SessionContext, boolean, SplittablePayload, FieldNameValidator): at com.mongodb.client.internal.CryptConnection.command(CryptConnection.java:100) at com.mongodb.client.internal.CryptConnection.command(CryptConnection.java:129) at com.mongodb.operation.QueryBatchCursor.getMore(QueryBatchCursor.java:260) at com.mongodb.operation.QueryBatchCursor.hasNext(QueryBatchCursor.java:138) at scala.collection.convert.Wrappers$JIteratorWrapper.hasNext(Wrappers.scala:42) at scala.collection.convert.Wrappers$MapWrapper$$anon$1$$anon$5.hasNext(Wrappers.scala:187) at com.mongodb.connection.TlsChannelStreamFactoryFactory$SelectorMonitor$1.run(TlsChannelStreamFactoryFactory.java:142) at java.lang.Thread.run(Thread.java:834) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved method during parsing: sun.nio.ch.DirectBuffer.cleaner(). To diagnose the issue you can use the --allow-incomplete-classpath option. The missing method is then reported at run time when it is accessed the first time. Trace: at parsing org.apache.spark.storage.StorageUtils$.cleanDirectBuffer(StorageUtils.scala:212) Call path from entry point to org.apache.spark.storage.StorageUtils$.cleanDirectBuffer(DirectBuffer): at org.apache.spark.storage.StorageUtils$.cleanDirectBuffer(StorageUtils.scala:212) at org.apache.spark.storage.StorageUtils$.dispose(StorageUtils.scala:207) at org.apache.spark.util.io.ChunkedByteBuffer$$anonfun$dispose$1.apply(ChunkedByteBuffer.scala:166) at org.apache.spark.util.io.ChunkedByteBuffer$$anonfun$dispose$1.apply(ChunkedByteBuffer.scala:166) at scala.collection.immutable.Stream.map(Stream.scala:418) at org.apache.spark.deploy.worker.ExecutorRunner.org$apache$spark$deploy$worker$ExecutorRunner$$fetchAndRunExecutor(ExecutorRunner.scala:145) at org.apache.spark.deploy.worker.ExecutorRunner$$anon$1.run(ExecutorRunner.scala:73) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: com.mongodb.crypt.capi.MongoCrypts. To diagnose the issue you can use the --allow-incomplete-classpath option. The missing type is then reported at run time when it is accessed the first time. Trace: at parsing com.mongodb.client.internal.Crypts.createCrypt(Crypts.java:35) Call path from entry point to com.mongodb.client.internal.Crypts.createCrypt(SimpleMongoClient, AutoEncryptionSettings): at com.mongodb.client.internal.Crypts.createCrypt(Crypts.java:35) at com.mongodb.client.internal.MongoClientImpl.(MongoClientImpl.java:70) at com.mongodb.client.internal.MongoClientImpl.(MongoClientImpl.java:61) at com.mongodb.client.MongoClients.create(MongoClients.java:114) at com.mongodb.client.MongoClients.create(MongoClients.java:50) at io.quarkus.mongodb.runtime.MongoClientRecorder.initialize(MongoClientRecorder.java:177) at io.quarkus.mongodb.runtime.MongoClientRecorder.configureTheClient(MongoClientRecorder.java:57) at io.quarkus.deployment.steps.MongoClientProcessor$build24.deploy_0(MongoClientProcessor$build24.zig:101) at io.quarkus.deployment.steps.MongoClientProcessor$build24.deploy(MongoClientProcessor$build24.zig:136) at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:242) at io.quarkus.runtime.Application.start(Application.java:87) at io.quarkus.runtime.Application.run(Application.java:210) at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:41) at com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:151) at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186) at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: sun.misc.Cleaner. To diagnose the issue you can use the --allow-incomplete-classpath option. The missing type is then reported at run time when it is accessed the first time. Trace: at parsing org.apache.spark.unsafe.Platform.allocateDirectBuffer(Platform.java:172) Call path from entry point to org.apache.spark.unsafe.Platform.allocateDirectBuffer(int): at org.apache.spark.unsafe.Platform.allocateDirectBuffer(Platform.java:165) at org.apache.spark.storage.memory.SerializedValuesHolder$$anonfun$7.apply(MemoryStore.scala:695) at org.apache.spark.storage.memory.SerializedValuesHolder$$anonfun$7.apply(MemoryStore.scala:695) at scala.collection.immutable.Stream.map(Stream.scala:418) at org.apache.spark.deploy.worker.ExecutorRunner.org$apache$spark$deploy$worker$ExecutorRunner$$fetchAndRunExecutor(ExecutorRunner.scala:145) at org.apache.spark.deploy.worker.ExecutorRunner$$anon$1.run(ExecutorRunner.scala:73) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method java.lang.ClassLoader.defineClass(String, byte[], int, int, ProtectionDomain) 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. Trace: at parsing com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(AccessClassLoader.java:103) Call path from entry point to com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(String, byte[]): at com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(AccessClassLoader.java:98) at com.esotericsoftware.reflectasm.ConstructorAccess.get(ConstructorAccess.java:103) at com.twitter.chill.Instantiators$.reflectAsm(KryoBase.scala:137) at com.oracle.svm.reflect.Instantiators$_reflectAsm_bae823bffce129be3a71483cc259f72f0c347f50_416.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:566) at java.util.ServiceLoader$ProviderImpl.invokeFactoryMethod(ServiceLoader.java:736) at java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:719) at com.oracle.svm.core.jdk.SystemPropertiesSupport.initializeLazyValue(SystemPropertiesSupport.java:188) at com.oracle.svm.core.jdk.SystemPropertiesSupport.getProperty(SystemPropertiesSupport.java:141) at com.oracle.svm.core.jdk.Target_java_lang_System.getProperty(JavaLangSubstitutions.java:342) at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_ARRAY:Ljava_lang_System_2_0002egetProperty_00028Ljava_lang_String_2_00029Ljava_lang_String_2(generated:0) Error: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method java.lang.ClassLoader.getClassLoader(Class) 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. Trace: at parsing java.lang.Package.getPackage(Package.java:353) Call path from entry point to java.lang.Package.getPackage(String): at java.lang.Package.getPackage(Package.java:353) at scala.reflect.runtime.JavaMirrors$JavaMirror.packageNameToScala(JavaMirrors.scala:931) at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$scala$reflect$runtime$JavaMirrors$$makeScalaPackage$1.apply(JavaMirrors.scala:943) at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$scala$reflect$runtime$JavaMirrors$$makeScalaPackage$1.apply(JavaMirrors.scala:940) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.AnalysisException.getMessage(AnalysisException.scala:46) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1148) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0)

com.oracle.svm.core.util.UserError$UserException: Unsupported features in 12 methods Detailed message: Error: Detected a started Thread in the image heap. Threads running in the image generator are no longer running at image run time. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image run time by using the option --initialize-at-build-time=. Or you can write your own initialization methods and call them explicitly from your main entry point. Trace: object java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue object java.util.concurrent.ScheduledThreadPoolExecutor object java.util.concurrent.Executors$DelegatedScheduledExecutorService object com.mongodb.spark.connection.MongoClientCache object com.mongodb.spark.MongoConnector$ method com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply() Call path from entry point to com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(): at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.AnalysisException.getMessage(AnalysisException.scala:46) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1148) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: Detected a started Thread in the image heap. Threads running in the image generator are no longer running at image run time. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image run time by using the option --initialize-at-build-time=. Or you can write your own initialization methods and call them explicitly from your main entry point. Trace: object java.util.concurrent.ThreadPoolExecutor$Worker object java.util.HashMap$Node object java.util.HashMap$Node[] object java.util.HashMap object java.util.HashSet object java.util.concurrent.ScheduledThreadPoolExecutor object java.util.concurrent.Executors$DelegatedScheduledExecutorService object com.mongodb.spark.connection.MongoClientCache object com.mongodb.spark.MongoConnector$ method com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply() Call path from entry point to com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(): at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.AnalysisException.getMessage(AnalysisException.scala:46) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1148) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: Detected a started Thread in the image heap. Threads running in the image generator are no longer running at image run time. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image run time by using the option --initialize-at-build-time=. Or you can write your own initialization methods and call them explicitly from your main entry point. Trace: object java.util.concurrent.locks.AbstractQueuedSynchronizer$Node object java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject object java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue object java.util.concurrent.ScheduledThreadPoolExecutor object java.util.concurrent.Executors$DelegatedScheduledExecutorService object com.mongodb.spark.connection.MongoClientCache object com.mongodb.spark.MongoConnector$ method com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply() Call path from entry point to com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(): at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.AnalysisException.getMessage(AnalysisException.scala:46) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1148) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: No instances of java.net.Inet4Address are allowed in the image heap as this class should be initialized at image runtime. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. Trace: object org.apache.spark.util.Utils$ method org.apache.spark.sql.Dataset$$anonfun$11$$anonfun$apply$5.apply(Tuple2) Call path from entry point to org.apache.spark.sql.Dataset$$anonfun$11$$anonfun$apply$5.apply(Tuple2): at org.apache.spark.sql.Dataset$$anonfun$11$$anonfun$apply$5.apply(Dataset.scala:313) at org.apache.spark.sql.Dataset$$anonfun$11$$anonfun$apply$5.apply(Dataset.scala:313) at scala.collection.immutable.Stream.map(Stream.scala:418) at org.apache.spark.deploy.worker.ExecutorRunner.org$apache$spark$deploy$worker$ExecutorRunner$$fetchAndRunExecutor(ExecutorRunner.scala:145) at org.apache.spark.deploy.worker.ExecutorRunner$$anon$1.run(ExecutorRunner.scala:73) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: No instances of sun.security.provider.NativePRNG are allowed in the image heap as this class should be initialized at image runtime. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. Trace: object java.security.SecureRandom object sun.security.ssl.SSLContextImpl$DefaultSSLContext object sun.security.ssl.SSLSocketFactoryImpl method com.mongodb.MongoClientOptions.getSocketFactory() Call path from entry point to com.mongodb.MongoClientOptions.getSocketFactory(): at com.mongodb.MongoClientOptions.getSocketFactory(MongoClientOptions.java:718) at com.mongodb.Mongo.createCluster(Mongo.java:757) at com.mongodb.Mongo.createCluster(Mongo.java:728) at com.mongodb.Mongo.(Mongo.java:313) at com.mongodb.MongoClient.(MongoClient.java:342) at com.mongodb.spark.connection.DefaultMongoClientFactory.create(DefaultMongoClientFactory.scala:49) at com.mongodb.spark.connection.MongoClientCache.acquire(MongoClientCache.scala:55) at com.mongodb.spark.MongoConnector.acquireClient(MongoConnector.scala:242) at com.mongodb.spark.MongoConnector.withMongoClientDo(MongoConnector.scala:155) at com.mongodb.spark.MongoConnector.withDatabaseDo(MongoConnector.scala:174) at com.oracle.svm.reflect.MongoConnector_withDatabaseDo_5de8b2c3dd005217a8b2f13c62827cc77c08c2ed_323.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:566) at java.util.ServiceLoader$ProviderImpl.invokeFactoryMethod(ServiceLoader.java:736) at java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:719) at com.oracle.svm.core.jdk.SystemPropertiesSupport.initializeLazyValue(SystemPropertiesSupport.java:188) at com.oracle.svm.core.jdk.SystemPropertiesSupport.getProperty(SystemPropertiesSupport.java:141) at com.oracle.svm.core.jdk.Target_java_lang_System.getProperty(JavaLangSubstitutions.java:342) at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_ARRAY:Ljava_lang_System_2_0002egetProperty_00028Ljava_lang_String_2_00029Ljava_lang_String_2(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved method during parsing: com.mongodb.client.internal.Crypt.close(). To diagnose the issue you can use the --allow-incomplete-classpath option. The missing method is then reported at run time when it is accessed the first time. Trace: at parsing com.mongodb.client.internal.MongoClientDelegate.close(MongoClientDelegate.java:130) Call path from entry point to com.mongodb.client.internal.MongoClientDelegate.close(): at com.mongodb.client.internal.MongoClientDelegate.close(MongoClientDelegate.java:129) at com.mongodb.client.internal.MongoClientImpl.close(MongoClientImpl.java:134) at io.quarkus.mongodb.runtime.MongoClientRecorder.close(MongoClientRecorder.java:74) at io.quarkus.mongodb.runtime.MongoClientRecorder$$Lambda$639/0x000000084645a840.run(Unknown Source) at com.oracle.svm.core.jdk.RuntimeSupport.executeHooks(RuntimeSupport.java:144) at com.oracle.svm.core.jdk.RuntimeSupport.executeStartupHooks(RuntimeSupport.java:89) at com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:143) at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186) at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved method during parsing: com.mongodb.client.internal.Crypt.encrypt(java.lang.String, org.bson.RawBsonDocument). To diagnose the issue you can use the --allow-incomplete-classpath option. The missing method is then reported at run time when it is accessed the first time. Trace: at parsing com.mongodb.client.internal.CryptConnection.command(CryptConnection.java:113) Call path from entry point to com.mongodb.client.internal.CryptConnection.command(String, BsonDocument, FieldNameValidator, ReadPreference, Decoder, SessionContext, boolean, SplittablePayload, FieldNameValidator): at com.mongodb.client.internal.CryptConnection.command(CryptConnection.java:100) at com.mongodb.client.internal.CryptConnection.command(CryptConnection.java:129) at com.mongodb.operation.QueryBatchCursor.getMore(QueryBatchCursor.java:260) at com.mongodb.operation.QueryBatchCursor.hasNext(QueryBatchCursor.java:138) at scala.collection.convert.Wrappers$JIteratorWrapper.hasNext(Wrappers.scala:42) at scala.collection.convert.Wrappers$MapWrapper$$anon$1$$anon$5.hasNext(Wrappers.scala:187) at com.mongodb.connection.TlsChannelStreamFactoryFactory$SelectorMonitor$1.run(TlsChannelStreamFactoryFactory.java:142) at java.lang.Thread.run(Thread.java:834) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved method during parsing: sun.nio.ch.DirectBuffer.cleaner(). To diagnose the issue you can use the --allow-incomplete-classpath option. The missing method is then reported at run time when it is accessed the first time. Trace: at parsing org.apache.spark.storage.StorageUtils$.cleanDirectBuffer(StorageUtils.scala:212) Call path from entry point to org.apache.spark.storage.StorageUtils$.cleanDirectBuffer(DirectBuffer): at org.apache.spark.storage.StorageUtils$.cleanDirectBuffer(StorageUtils.scala:212) at org.apache.spark.storage.StorageUtils$.dispose(StorageUtils.scala:207) at org.apache.spark.util.io.ChunkedByteBuffer$$anonfun$dispose$1.apply(ChunkedByteBuffer.scala:166) at org.apache.spark.util.io.ChunkedByteBuffer$$anonfun$dispose$1.apply(ChunkedByteBuffer.scala:166) at scala.collection.immutable.Stream.map(Stream.scala:418) at org.apache.spark.deploy.worker.ExecutorRunner.org$apache$spark$deploy$worker$ExecutorRunner$$fetchAndRunExecutor(ExecutorRunner.scala:145) at org.apache.spark.deploy.worker.ExecutorRunner$$anon$1.run(ExecutorRunner.scala:73) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: com.mongodb.crypt.capi.MongoCrypts. To diagnose the issue you can use the --allow-incomplete-classpath option. The missing type is then reported at run time when it is accessed the first time. Trace: at parsing com.mongodb.client.internal.Crypts.createCrypt(Crypts.java:35) Call path from entry point to com.mongodb.client.internal.Crypts.createCrypt(SimpleMongoClient, AutoEncryptionSettings): at com.mongodb.client.internal.Crypts.createCrypt(Crypts.java:35) at com.mongodb.client.internal.MongoClientImpl.(MongoClientImpl.java:70) at com.mongodb.client.internal.MongoClientImpl.(MongoClientImpl.java:61) at com.mongodb.client.MongoClients.create(MongoClients.java:114) at com.mongodb.client.MongoClients.create(MongoClients.java:50) at io.quarkus.mongodb.runtime.MongoClientRecorder.initialize(MongoClientRecorder.java:177) at io.quarkus.mongodb.runtime.MongoClientRecorder.configureTheClient(MongoClientRecorder.java:57) at io.quarkus.deployment.steps.MongoClientProcessor$build24.deploy_0(MongoClientProcessor$build24.zig:101) at io.quarkus.deployment.steps.MongoClientProcessor$build24.deploy(MongoClientProcessor$build24.zig:136) at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:242) at io.quarkus.runtime.Application.start(Application.java:87) at io.quarkus.runtime.Application.run(Application.java:210) at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:41) at com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:151) at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186) at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: sun.misc.Cleaner. To diagnose the issue you can use the --allow-incomplete-classpath option. The missing type is then reported at run time when it is accessed the first time. Trace: at parsing org.apache.spark.unsafe.Platform.allocateDirectBuffer(Platform.java:172) Call path from entry point to org.apache.spark.unsafe.Platform.allocateDirectBuffer(int): at org.apache.spark.unsafe.Platform.allocateDirectBuffer(Platform.java:165) at org.apache.spark.storage.memory.SerializedValuesHolder$$anonfun$7.apply(MemoryStore.scala:695) at org.apache.spark.storage.memory.SerializedValuesHolder$$anonfun$7.apply(MemoryStore.scala:695) at scala.collection.immutable.Stream.map(Stream.scala:418) at org.apache.spark.deploy.worker.ExecutorRunner.org$apache$spark$deploy$worker$ExecutorRunner$$fetchAndRunExecutor(ExecutorRunner.scala:145) at org.apache.spark.deploy.worker.ExecutorRunner$$anon$1.run(ExecutorRunner.scala:73) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method java.lang.ClassLoader.defineClass(String, byte[], int, int, ProtectionDomain) 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. Trace: at parsing com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(AccessClassLoader.java:103) Call path from entry point to com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(String, byte[]): at com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(AccessClassLoader.java:98) at com.esotericsoftware.reflectasm.ConstructorAccess.get(ConstructorAccess.java:103) at com.twitter.chill.Instantiators$.reflectAsm(KryoBase.scala:137) at com.oracle.svm.reflect.Instantiators$_reflectAsm_bae823bffce129be3a71483cc259f72f0c347f50_416.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:566) at java.util.ServiceLoader$ProviderImpl.invokeFactoryMethod(ServiceLoader.java:736) at java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:719) at com.oracle.svm.core.jdk.SystemPropertiesSupport.initializeLazyValue(SystemPropertiesSupport.java:188) at com.oracle.svm.core.jdk.SystemPropertiesSupport.getProperty(SystemPropertiesSupport.java:141) at com.oracle.svm.core.jdk.Target_java_lang_System.getProperty(JavaLangSubstitutions.java:342) at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_ARRAY:Ljava_lang_System_2_0002egetProperty_00028Ljava_lang_String_2_00029Ljava_lang_String_2(generated:0) Error: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method java.lang.ClassLoader.getClassLoader(Class) 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. Trace: at parsing java.lang.Package.getPackage(Package.java:353) Call path from entry point to java.lang.Package.getPackage(String): at java.lang.Package.getPackage(Package.java:353) at scala.reflect.runtime.JavaMirrors$JavaMirror.packageNameToScala(JavaMirrors.scala:931) at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$scala$reflect$runtime$JavaMirrors$$makeScalaPackage$1.apply(JavaMirrors.scala:943) at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$scala$reflect$runtime$JavaMirrors$$makeScalaPackage$1.apply(JavaMirrors.scala:940) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.AnalysisException.getMessage(AnalysisException.scala:46) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1148) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0)

    at com.oracle.svm.core.util.UserError.abort(UserError.java:75)
    at com.oracle.svm.hosted.FallbackFeature.reportAsFallback(FallbackFeature.java:221)
    at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:736)
    at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:530)
    at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:445)
    at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)

Caused by: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Unsupported features in 12 methods Detailed message: Error: Detected a started Thread in the image heap. Threads running in the image generator are no longer running at image run time. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image run time by using the option --initialize-at-build-time=. Or you can write your own initialization methods and call them explicitly from your main entry point. Trace: object java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue object java.util.concurrent.ScheduledThreadPoolExecutor object java.util.concurrent.Executors$DelegatedScheduledExecutorService object com.mongodb.spark.connection.MongoClientCache object com.mongodb.spark.MongoConnector$ method com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply() Call path from entry point to com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(): at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.AnalysisException.getMessage(AnalysisException.scala:46) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1148) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: Detected a started Thread in the image heap. Threads running in the image generator are no longer running at image run time. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image run time by using the option --initialize-at-build-time=. Or you can write your own initialization methods and call them explicitly from your main entry point. Trace: object java.util.concurrent.ThreadPoolExecutor$Worker object java.util.HashMap$Node object java.util.HashMap$Node[] object java.util.HashMap object java.util.HashSet object java.util.concurrent.ScheduledThreadPoolExecutor object java.util.concurrent.Executors$DelegatedScheduledExecutorService object com.mongodb.spark.connection.MongoClientCache object com.mongodb.spark.MongoConnector$ method com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply() Call path from entry point to com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(): at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.AnalysisException.getMessage(AnalysisException.scala:46) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1148) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: Detected a started Thread in the image heap. Threads running in the image generator are no longer running at image run time. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image run time by using the option --initialize-at-build-time=. Or you can write your own initialization methods and call them explicitly from your main entry point. Trace: object java.util.concurrent.locks.AbstractQueuedSynchronizer$Node object java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject object java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue object java.util.concurrent.ScheduledThreadPoolExecutor object java.util.concurrent.Executors$DelegatedScheduledExecutorService object com.mongodb.spark.connection.MongoClientCache object com.mongodb.spark.MongoConnector$ method com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply() Call path from entry point to com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(): at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at com.mongodb.spark.MongoSpark$Builder$$anonfun$4.apply(MongoSpark.scala:236) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.AnalysisException.getMessage(AnalysisException.scala:46) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1148) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: No instances of java.net.Inet4Address are allowed in the image heap as this class should be initialized at image runtime. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. Trace: object org.apache.spark.util.Utils$ method org.apache.spark.sql.Dataset$$anonfun$11$$anonfun$apply$5.apply(Tuple2) Call path from entry point to org.apache.spark.sql.Dataset$$anonfun$11$$anonfun$apply$5.apply(Tuple2): at org.apache.spark.sql.Dataset$$anonfun$11$$anonfun$apply$5.apply(Dataset.scala:313) at org.apache.spark.sql.Dataset$$anonfun$11$$anonfun$apply$5.apply(Dataset.scala:313) at scala.collection.immutable.Stream.map(Stream.scala:418) at org.apache.spark.deploy.worker.ExecutorRunner.org$apache$spark$deploy$worker$ExecutorRunner$$fetchAndRunExecutor(ExecutorRunner.scala:145) at org.apache.spark.deploy.worker.ExecutorRunner$$anon$1.run(ExecutorRunner.scala:73) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: No instances of sun.security.provider.NativePRNG are allowed in the image heap as this class should be initialized at image runtime. Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. Trace: object java.security.SecureRandom object sun.security.ssl.SSLContextImpl$DefaultSSLContext object sun.security.ssl.SSLSocketFactoryImpl method com.mongodb.MongoClientOptions.getSocketFactory() Call path from entry point to com.mongodb.MongoClientOptions.getSocketFactory(): at com.mongodb.MongoClientOptions.getSocketFactory(MongoClientOptions.java:718) at com.mongodb.Mongo.createCluster(Mongo.java:757) at com.mongodb.Mongo.createCluster(Mongo.java:728) at com.mongodb.Mongo.(Mongo.java:313) at com.mongodb.MongoClient.(MongoClient.java:342) at com.mongodb.spark.connection.DefaultMongoClientFactory.create(DefaultMongoClientFactory.scala:49) at com.mongodb.spark.connection.MongoClientCache.acquire(MongoClientCache.scala:55) at com.mongodb.spark.MongoConnector.acquireClient(MongoConnector.scala:242) at com.mongodb.spark.MongoConnector.withMongoClientDo(MongoConnector.scala:155) at com.mongodb.spark.MongoConnector.withDatabaseDo(MongoConnector.scala:174) at com.oracle.svm.reflect.MongoConnector_withDatabaseDo_5de8b2c3dd005217a8b2f13c62827cc77c08c2ed_323.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:566) at java.util.ServiceLoader$ProviderImpl.invokeFactoryMethod(ServiceLoader.java:736) at java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:719) at com.oracle.svm.core.jdk.SystemPropertiesSupport.initializeLazyValue(SystemPropertiesSupport.java:188) at com.oracle.svm.core.jdk.SystemPropertiesSupport.getProperty(SystemPropertiesSupport.java:141) at com.oracle.svm.core.jdk.Target_java_lang_System.getProperty(JavaLangSubstitutions.java:342) at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_ARRAY:Ljava_lang_System_2_0002egetProperty_00028Ljava_lang_String_2_00029Ljava_lang_String_2(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved method during parsing: com.mongodb.client.internal.Crypt.close(). To diagnose the issue you can use the --allow-incomplete-classpath option. The missing method is then reported at run time when it is accessed the first time. Trace: at parsing com.mongodb.client.internal.MongoClientDelegate.close(MongoClientDelegate.java:130) Call path from entry point to com.mongodb.client.internal.MongoClientDelegate.close(): at com.mongodb.client.internal.MongoClientDelegate.close(MongoClientDelegate.java:129) at com.mongodb.client.internal.MongoClientImpl.close(MongoClientImpl.java:134) at io.quarkus.mongodb.runtime.MongoClientRecorder.close(MongoClientRecorder.java:74) at io.quarkus.mongodb.runtime.MongoClientRecorder$$Lambda$639/0x000000084645a840.run(Unknown Source) at com.oracle.svm.core.jdk.RuntimeSupport.executeHooks(RuntimeSupport.java:144) at com.oracle.svm.core.jdk.RuntimeSupport.executeStartupHooks(RuntimeSupport.java:89) at com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:143) at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186) at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved method during parsing: com.mongodb.client.internal.Crypt.encrypt(java.lang.String, org.bson.RawBsonDocument). To diagnose the issue you can use the --allow-incomplete-classpath option. The missing method is then reported at run time when it is accessed the first time. Trace: at parsing com.mongodb.client.internal.CryptConnection.command(CryptConnection.java:113) Call path from entry point to com.mongodb.client.internal.CryptConnection.command(String, BsonDocument, FieldNameValidator, ReadPreference, Decoder, SessionContext, boolean, SplittablePayload, FieldNameValidator): at com.mongodb.client.internal.CryptConnection.command(CryptConnection.java:100) at com.mongodb.client.internal.CryptConnection.command(CryptConnection.java:129) at com.mongodb.operation.QueryBatchCursor.getMore(QueryBatchCursor.java:260) at com.mongodb.operation.QueryBatchCursor.hasNext(QueryBatchCursor.java:138) at scala.collection.convert.Wrappers$JIteratorWrapper.hasNext(Wrappers.scala:42) at scala.collection.convert.Wrappers$MapWrapper$$anon$1$$anon$5.hasNext(Wrappers.scala:187) at com.mongodb.connection.TlsChannelStreamFactoryFactory$SelectorMonitor$1.run(TlsChannelStreamFactoryFactory.java:142) at java.lang.Thread.run(Thread.java:834) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved method during parsing: sun.nio.ch.DirectBuffer.cleaner(). To diagnose the issue you can use the --allow-incomplete-classpath option. The missing method is then reported at run time when it is accessed the first time. Trace: at parsing org.apache.spark.storage.StorageUtils$.cleanDirectBuffer(StorageUtils.scala:212) Call path from entry point to org.apache.spark.storage.StorageUtils$.cleanDirectBuffer(DirectBuffer): at org.apache.spark.storage.StorageUtils$.cleanDirectBuffer(StorageUtils.scala:212) at org.apache.spark.storage.StorageUtils$.dispose(StorageUtils.scala:207) at org.apache.spark.util.io.ChunkedByteBuffer$$anonfun$dispose$1.apply(ChunkedByteBuffer.scala:166) at org.apache.spark.util.io.ChunkedByteBuffer$$anonfun$dispose$1.apply(ChunkedByteBuffer.scala:166) at scala.collection.immutable.Stream.map(Stream.scala:418) at org.apache.spark.deploy.worker.ExecutorRunner.org$apache$spark$deploy$worker$ExecutorRunner$$fetchAndRunExecutor(ExecutorRunner.scala:145) at org.apache.spark.deploy.worker.ExecutorRunner$$anon$1.run(ExecutorRunner.scala:73) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: com.mongodb.crypt.capi.MongoCrypts. To diagnose the issue you can use the --allow-incomplete-classpath option. The missing type is then reported at run time when it is accessed the first time. Trace: at parsing com.mongodb.client.internal.Crypts.createCrypt(Crypts.java:35) Call path from entry point to com.mongodb.client.internal.Crypts.createCrypt(SimpleMongoClient, AutoEncryptionSettings): at com.mongodb.client.internal.Crypts.createCrypt(Crypts.java:35) at com.mongodb.client.internal.MongoClientImpl.(MongoClientImpl.java:70) at com.mongodb.client.internal.MongoClientImpl.(MongoClientImpl.java:61) at com.mongodb.client.MongoClients.create(MongoClients.java:114) at com.mongodb.client.MongoClients.create(MongoClients.java:50) at io.quarkus.mongodb.runtime.MongoClientRecorder.initialize(MongoClientRecorder.java:177) at io.quarkus.mongodb.runtime.MongoClientRecorder.configureTheClient(MongoClientRecorder.java:57) at io.quarkus.deployment.steps.MongoClientProcessor$build24.deploy_0(MongoClientProcessor$build24.zig:101) at io.quarkus.deployment.steps.MongoClientProcessor$build24.deploy(MongoClientProcessor$build24.zig:136) at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:242) at io.quarkus.runtime.Application.start(Application.java:87) at io.quarkus.runtime.Application.run(Application.java:210) at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:41) at com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:151) at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186) at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0) Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: sun.misc.Cleaner. To diagnose the issue you can use the --allow-incomplete-classpath option. The missing type is then reported at run time when it is accessed the first time. Trace: at parsing org.apache.spark.unsafe.Platform.allocateDirectBuffer(Platform.java:172) Call path from entry point to org.apache.spark.unsafe.Platform.allocateDirectBuffer(int): at org.apache.spark.unsafe.Platform.allocateDirectBuffer(Platform.java:165) at org.apache.spark.storage.memory.SerializedValuesHolder$$anonfun$7.apply(MemoryStore.scala:695) at org.apache.spark.storage.memory.SerializedValuesHolder$$anonfun$7.apply(MemoryStore.scala:695) at scala.collection.immutable.Stream.map(Stream.scala:418) at org.apache.spark.deploy.worker.ExecutorRunner.org$apache$spark$deploy$worker$ExecutorRunner$$fetchAndRunExecutor(ExecutorRunner.scala:145) at org.apache.spark.deploy.worker.ExecutorRunner$$anon$1.run(ExecutorRunner.scala:73) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method java.lang.ClassLoader.defineClass(String, byte[], int, int, ProtectionDomain) 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. Trace: at parsing com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(AccessClassLoader.java:103) Call path from entry point to com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(String, byte[]): at com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(AccessClassLoader.java:98) at com.esotericsoftware.reflectasm.ConstructorAccess.get(ConstructorAccess.java:103) at com.twitter.chill.Instantiators$.reflectAsm(KryoBase.scala:137) at com.oracle.svm.reflect.Instantiators$_reflectAsm_bae823bffce129be3a71483cc259f72f0c347f50_416.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:566) at java.util.ServiceLoader$ProviderImpl.invokeFactoryMethod(ServiceLoader.java:736) at java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:719) at com.oracle.svm.core.jdk.SystemPropertiesSupport.initializeLazyValue(SystemPropertiesSupport.java:188) at com.oracle.svm.core.jdk.SystemPropertiesSupport.getProperty(SystemPropertiesSupport.java:141) at com.oracle.svm.core.jdk.Target_java_lang_System.getProperty(JavaLangSubstitutions.java:342) at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_ARRAY:Ljava_lang_System_2_0002egetProperty_00028Ljava_lang_String_2_00029Ljava_lang_String_2(generated:0) Error: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method java.lang.ClassLoader.getClassLoader(Class) 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. Trace: at parsing java.lang.Package.getPackage(Package.java:353) Call path from entry point to java.lang.Package.getPackage(String): at java.lang.Package.getPackage(Package.java:353) at scala.reflect.runtime.JavaMirrors$JavaMirror.packageNameToScala(JavaMirrors.scala:931) at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$scala$reflect$runtime$JavaMirrors$$makeScalaPackage$1.apply(JavaMirrors.scala:943) at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$scala$reflect$runtime$JavaMirrors$$makeScalaPackage$1.apply(JavaMirrors.scala:940) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.AnalysisException.getMessage(AnalysisException.scala:46) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1148) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0)

    at com.oracle.graal.pointsto.constraints.UnsupportedFeatures.report(UnsupportedFeatures.java:129)
    at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:733)
    ... 8 more

20/07/17 04:04:04 INFO ShutdownHookManager: Shutdown hook called Error: Image build request failed with exit status 1 [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 14:13 min [INFO] Finished at: 2020-07-17T04:04:05Z [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal io.quarkus:quarkus-maven-plugin:1.2.1.Final:build (default) on project medium-quarkus: Failed to build a runnable JAR: Failed to augment application classes: Build failure: Build failed due to errors [ERROR] [error]: Build step io.quarkus.deployment.pkg.steps.NativeImageBuildStep#build threw an exception: java.lang.RuntimeException: Failed to build native image [ERROR] at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:319) [ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [ERROR] at java.lang.reflect.Method.invoke(Method.java:498) [ERROR] at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:915) [ERROR] at io.quarkus.builder.BuildContext.run(BuildContext.java:279) [ERROR] at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) [ERROR] at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011) [ERROR] at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535) [ERROR] at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426) [ERROR] at java.lang.Thread.run(Thread.java:748) [ERROR] at org.jboss.threads.JBossThread.run(JBossThread.java:479) [ERROR] Caused by: java.lang.RuntimeException: Image generation failed. Exit code: 1 [ERROR] at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:308) [ERROR] ... 12 more [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException The command '/bin/sh -c mvn -f /usr/src/app/pom.xml -s /usr/src/app/settings.xml -Pnative package

Expected behavior Package successfully

Actual behavior (Describe the actual behavior clearly and concisely.)

To Reproduce Steps to reproduce the behavior:

  1. mvn -f /usr/src/app/pom.xml -s /usr/src/app/settings.xml -Pnative package -Djavax.net.ssl.trustStore=/usr/src/app/cacerts

Configuration

Using quay.io/quarkus/centos-quarkus-maven:19.3.1-java11 as base

Dockerfile
## Stage 1 : build with maven builder image with native capabilities 
FROM tcapps/native:1.0.1 
COPY pom.xml /usr/src/app/ 
COPY cacerts /usr/src/app/
COPY settings.xml /usr/src/app/
RUN mvn -f /usr/src/app/pom.xml -s /usr/src/app/settings.xml -B de.qaware.maven:go-offline-maven-plugin:1.2.5:resolve-dependencies -Djavax.net.ssl.trustStore=/usr/src/app/cacerts
COPY src /usr/src/app/src 
USER root 
#RUN chown -R quarkus /usr/src/app 
#USER quarkus 
RUN mvn -f /usr/src/app/pom.xml -s /usr/src/app/settings.xml -Pnative package -Djavax.net.ssl.trustStore=/usr/src/app/cacerts

## Stage 2 : create the docker final image 
FROM registry.access.redhat.com/ubi8/ubi-minimal 
WORKDIR /work/ 
COPY --from=build /usr/src/app/target/*-runner /work/application 
# set up permissions for user `1001` 
RUN chmod 775 /work /work/application \ && chown -R 1001 /work \ && chmod -R "g+rwX" /work \ && chown -R 1001:root /work 
EXPOSE 8080 
USER 1001 
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]

     pom.xml
     <properties>
        <quarkus.package.type>native</quarkus.package.type>
        <quarkus.native.additional-build-args>
        --initialize-at-run-time=com.mongodb.client.internal.Crypt,-H:+TraceClassInitialization
    </quarkus.native.additional-build-args>
      </properties>

Screenshots image

(If applicable, add screenshots to help explain your problem.)

Environment (please complete the following information):

Additional context (Add any other context about the problem here.)

geoand commented 4 years ago

It seems like you are trying to make Mongo Spark (https://github.com/mongodb/mongo-spark) work in native. There is no supporting extension for that, so it's no surprise that it doesn't work in native mode.

Furthermore, the Quarkus version you are using is very old. I would urge you to try again with Quarkus 1.6.0.Final and GraalVM 20.1.0.

michalszynkiewicz commented 4 years ago

@geoand @askalee90 should we close this issue or change it from bug to enhancement and change the description?

geoand commented 4 years ago

Let's make it a enhancement :)

askalee90 commented 4 years ago

Can change to enhancement?

On Mon, 27 Jul 2020, 11:38 pm Michał Szynkiewicz, notifications@github.com wrote:

@geoand https://github.com/geoand @askalee90 https://github.com/askalee90 should we close this issue or change it from bug to enhancement and change the description?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/quarkusio/quarkus/issues/10802#issuecomment-664470762, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACRDQJ5ZYDQCZQKY7B7Y3OLR5WNNXANCNFSM4O534AVQ .

loicmathieu commented 4 years ago

@askalee90 I didn't saw your pom.xml but did you use our quarkus-mongodb-client extension ? It provides substitution for GraalVM so you must include it for MongoDB client to works.

We also include the mongodb-crypt library because it's needed for native image, I was that you have issue with com.mongodb.client.internal.Cryptthis class is provided by the mongodb-crypt that we include with our extension.

loicmathieu commented 3 years ago

@askalee90 did you try with a more recent Quarkus version and with the quarkus-mongodb-client as suggested ? It may fix the issue without the need for an extension.