mongo-jdbc-driver icon indicating copy to clipboard operation
mongo-jdbc-driver copied to clipboard

StackOverflowError when using conflicting GraalVM

Open danielzgtg opened this issue 3 years ago • 0 comments

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?

danielzgtg avatar Nov 19 '22 02:11 danielzgtg