mongo-jdbc-driver
mongo-jdbc-driver copied to clipboard
StackOverflowError when using conflicting GraalVM
I am getting a red snackbar in both the table tab and the query console tab. It says "java.lang.StackOverflowError" and no data loads.
This error does not occur with the provided JetBrains Runtime. The table and queries work fine when it is being used. Reverting to it is a workaround. I know switching the JDK is not officially supported, but JBR is way too slow. I am using GraalVM 22.3.0 Java 19 with "gu install js" and several performance-tuning VM options.
It appears that the GraalVM in the Jar is conflicting with the one I'm trying to use.
2022-11-18 21:11:54,004 [ 22258] WARN - #c.i.d.d.BaseDatabaseErrorHandler$UnknownErrorInfo - Error occurred in server thread; nested exception is:
java.lang.StackOverflowError
java.rmi.ServerError: Error occurred in server thread; nested exception is:
java.lang.StackOverflowError
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:389)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:598)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:844)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:721)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:720)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1589)
at java.rmi/sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:304)
at java.rmi/sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:280)
at java.rmi/sun.rmi.server.UnicastRef.invoke(UnicastRef.java:166)
at java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:215)
at java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:160)
at jdk.proxy6/jdk.proxy6.$Proxy235.execute(Unknown Source)
at com.intellij.database.dataSource.connection.statements.StandardExecutionMode$GENERIC.execute(StandardExecutionMode.kt:10)
at com.intellij.database.dataSource.connection.statements.JdbcBasedSmartStatement$Simple.executeJdbcStatement(JdbcBasedSmartStatement.kt:259)
at com.intellij.database.dataSource.connection.statements.JdbcBasedSmartStatement$Simple.executeJdbcStatement(JdbcBasedSmartStatement.kt:252)
at com.intellij.database.dataSource.connection.statements.JdbcBasedSmartStatement$memorizeAndExecute$1$1.invoke(JdbcBasedSmartStatement.kt:86)
at com.intellij.database.dataSource.connection.statements.JdbcBasedSmartStatement$memorizeAndExecute$1$1.invoke(JdbcBasedSmartStatement.kt:22)
at com.intellij.database.dataSource.connection.statements.SmartStatementsUtil.runReporting(SmartStatementsUtil.kt:82)
at com.intellij.database.dataSource.connection.statements.JdbcBasedSmartStatement$memorizeAndExecute$1.invoke(JdbcBasedSmartStatement.kt:85)
at com.intellij.database.dataSource.connection.statements.JdbcBasedSmartStatement$memorizeAndExecute$1.invoke(JdbcBasedSmartStatement.kt:22)
at com.intellij.database.dataSource.connection.Either.transform(Either.kt:23)
at com.intellij.database.dataSource.connection.EitherKt.transformSafe(Either.kt:45)
at com.intellij.database.dataSource.connection.statements.JdbcBasedSmartStatement.memorizeAndExecute(JdbcBasedSmartStatement.kt:84)
at com.intellij.database.dataSource.connection.statements.JdbcBasedSmartStatement.access$memorizeAndExecute(JdbcBasedSmartStatement.kt:22)
at com.intellij.database.dataSource.connection.statements.JdbcBasedSmartStatement$executeInCommonWay$1.invoke(JdbcBasedSmartStatement.kt:72)
at com.intellij.database.dataSource.connection.statements.JdbcBasedSmartStatement$executeInCommonWay$1.invoke(JdbcBasedSmartStatement.kt:22)
at com.intellij.database.dataSource.connection.Either.transform(Either.kt:23)
at com.intellij.database.dataSource.connection.EitherKt.transformSafe(Either.kt:45)
at com.intellij.database.dataSource.connection.statements.JdbcBasedSmartStatement.executeInCommonWay(JdbcBasedSmartStatement.kt:71)
at com.intellij.database.dataSource.connection.statements.JdbcBasedSmartStatement.execute(JdbcBasedSmartStatement.kt:46)
at com.intellij.database.dataSource.connection.statements.NoisyStatement.execute(NoisyStatement.kt:24)
at com.intellij.database.console.JdbcEngine$RegularExecutor.execute(JdbcEngine.java:1403)
at com.intellij.database.console.JdbcEngine$QueryExecutionOperation.lambda$execute$1(JdbcEngine.java:1991)
at com.intellij.database.dialects.base.BaseExecutionEnvironmentHelper.runInSpecificEnvironment(BaseExecutionEnvironmentHelper.java:107)
at com.intellij.database.console.JdbcEngine$QueryExecutionOperation.execute(JdbcEngine.java:1990)
at com.intellij.database.console.JdbcEngine$QueryExecutionOperation.perform(JdbcEngine.java:1935)
at com.intellij.database.console.JdbcEngine$OperationBase.perform(JdbcEngine.java:1602)
at com.intellij.database.console.JdbcEngine.lambda$visitQuery$4(JdbcEngine.java:419)
at com.intellij.database.console.JdbcEngine.lambda$submitRequest$16(JdbcEngine.java:1095)
at com.intellij.database.console.AbstractEngine.lambda$submitRequest$8(AbstractEngine.java:238)
at com.intellij.database.console.AbstractEngine.lambda$submitRunnable$6(AbstractEngine.java:209)
at com.intellij.database.util.AsyncTask$Frame$sync$$inlined$framed$intellij_database_core_impl$1.run(AsyncTask.kt:507)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
at com.intellij.database.util.AsyncTask$Frame.sync(AsyncTask.kt:532)
at com.intellij.database.console.AbstractEngine.lambda$submitRunnable$7(AbstractEngine.java:207)
at com.intellij.database.console.AbstractEngine.lambda$submitRunnable$5(AbstractEngine.java:188)
at com.intellij.database.util.AsyncTask$Frame$compute$$inlined$supply$1$1.run(AsyncTask.kt:507)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:623)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
at com.intellij.database.util.AsyncTask$Frame$compute$$inlined$supply$1.get(AsyncTask.kt:532)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: java.lang.StackOverflowError
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.GraalTruffleRuntimeListenerDispatcher.onCompilationDeoptimized(GraalTruffleRuntimeListenerDispatcher.java:110)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.notifyDeoptimized(OptimizedCallTarget.java:730)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:720)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:632)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.doInvoke(OptimizedCallTarget.java:549)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.GraalRuntimeSupport.callProfiled(GraalRuntimeSupport.java:256)
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValueDispatch$InteropValue.execute(PolyglotValueDispatch.java:2396)
at org.graalvm.sdk/org.graalvm.polyglot.Value.execute(Value.java:880)
at com.mongodb.mongosh.ValueWrapper.isWrapped(ValueWrapper.kt:33)
at com.mongodb.mongosh.MongoShellConverter.toJava(MongoShellConverter.kt:131)
at com.mongodb.mongosh.MongoShellConverter.toJava$default(MongoShellConverter.kt:129)
(then the last two lines keep repeating)
Can you make this driver compatible with the performant GraalVM 22.3 please?