Skip to content

SNOW-1038770: Failed to initialize MemoryUtil. Was Java started with --add-opens=java.base/java.nio=ALL-UNNAMED? #82

@knanne

Description

@knanne

Trying to bump our our Springboot application to Java 17, was excited to see 17 support in new release of snowpark 1.10

However, we are still getting the below error message. The error happens immediately after performing an INSERT statement on the database successfully. The code doing that insert is

...
df_log.write().option("columnOrder", "name").mode(SaveMode.Append).saveAsTable("AUDIT_JOB_LOGS");

session.close();

It looks like the release included passing of some java args 8b4c579 as described as a "short-term solution" in https://community.snowflake.com/s/article/JDBC-Driver-Compatibility-Issue-With-JDK-16-and-Later

Is this maybe not excluding something important?

My build.gradle file is also below

error

[restartedMain] INFO com.snowflake.snowpark.Session - Closing stderr and redirecting to stdout
[restartedMain] INFO com.snowflake.snowpark.Session - Done closing stderr and redirecting to stdout
[restartedMain] INFO com.snowflake.snowpark.internal.ParameterUtils - set JDBC client memory limit to 10240
[restartedMain] INFO com.snowflake.snowpark.Session - Snowpark Session information: {
 "snowpark.version" : "1.10.0",
 "client.language": "Java",
 "java.version" : "17.0.9",
 "scala.version" : "2.12.18",
 "jdbc.session.id" : "66284275835526",
 "os.name" : "Windows 10",
 "jdbc.version" : "3.14.4",
 "snowpark.library" : "/C:/Users/kain.nanne/.gradle/caches/modules-2/files-2.1/com.snowflake/snowpark/1.10.0/c13dc54ec6cdd0e2468d7f3ec48ccc68ffbd2e7a/snowpark-1.10.0.jar",
 "scala.library" : "/C:/Users/kain.nanne/.gradle/caches/modules-2/files-2.1/org.scala-lang/scala-library/2.12.18/fa825f984172f6801e3d8c476071b1823c0a925b/scala-library-2.12.18.jar",
 "jdbc.library" : "/C:/Users/kain.nanne/.gradle/caches/modules-2/files-2.1/net.snowflake/snowflake-jdbc/3.14.4/aa39560c63fc8a578aecf6a0314d3cc7e0ae507/snowflake-jdbc-3.14.4.jar"
}
[restartedMain] INFO com.snowflake.snowpark.internal.ServerConnection - Actively querying parameter QUERY_TAG from server.
[restartedMain] INFO com.snowflake.snowpark.internal.ServerConnection - Execute query [queryID: 01b21079-0000-b063-0000-3c491284b042] DESCRIBE TABLE AUDIT_JOB_LOGS
[restartedMain] INFO com.snowflake.snowpark.internal.ServerConnection - Execute query [queryID: 01b21079-0000-b07d-0000-3c491284ad7e] DESCRIBE TABLE AUDIT_JOB_LOGS
[restartedMain] INFO com.snowflake.snowpark.internal.ServerConnection - Execute query [queryID: 01b21079-0000-b063-0000-3c491284b082]  INSERT  INTO AUDIT_JOB_LOGS SELECT  *  FROM ( SELECT "JOB_ID", "SERVER", "JOB_TYPE", "START_TIME", "END_TIME", "ARGS", "RECORDS", "DURATION_SEC", "STATUS", "ERROR", "COMMENT" FROM ( SELECT "JOB_ID", "SERVER", "JOB_TYPE", "START_TIME", to_timestamp("END_TIME") AS "END_TIME", "ARGS", "RECORDS", "DURATION_SEC", "STATUS", "ERROR", "COMMENT" FROM ( SELECT  *  FROM ( VALUES ('5bdcf6c1-59bd-4655-adad-540081387340', 'AVD0629328-0: kain.nanne', 'JAVA APP STARTUP', NULL :: string, '2024-02-01 12:01:10', NULL :: string, NULL :: int, NULL :: int, 'COMPLETE', NULL :: string, 'LOG: INFO | BATCH SIZE: 100000 | SERVER TIME: 2024-02-01 12:01:10 | NEXT SCHEDULE: 2024-02-02 06:00:00') AS SNOWPARK_TEMP_TABLE_ON89TG4BKZYLF13("JOB_ID", "SERVER", "JOB_TYPE", "START_TIME", "END_TIME", "ARGS", "RECORDS", "DURATION_SEC", "STATUS", "ERROR", "COMMENT")))))
[restartedMain] INFO com.snowflake.snowpark.Session - Closing session: {
 "snowpark.version" : "1.10.0",
 "client.language": "Java",
 "java.version" : "17.0.9",
 "scala.version" : "2.12.18",
 "jdbc.session.id" : "66284275835526",
 "os.name" : "Windows 10",
 "jdbc.version" : "3.14.4",
 "snowpark.library" : "/C:/Users/kain.nanne/.gradle/caches/modules-2/files-2.1/com.snowflake/snowpark/1.10.0/c13dc54ec6cdd0e2468d7f3ec48ccc68ffbd2e7a/snowpark-1.10.0.jar",
 "scala.library" : "/C:/Users/kain.nanne/.gradle/caches/modules-2/files-2.1/org.scala-lang/scala-library/2.12.18/fa825f984172f6801e3d8c476071b1823c0a925b/scala-library-2.12.18.jar",
 "jdbc.library" : "/C:/Users/kain.nanne/.gradle/caches/modules-2/files-2.1/net.snowflake/snowflake-jdbc/3.14.4/aa39560c63fc8a578aecf6a0314d3cc7e0ae507/snowflake-jdbc-3.14.4.jar"
}
[restartedMain] INFO com.snowflake.snowpark.Session - Canceling all running query
java.lang.RuntimeException: Failed to initialize MemoryUtil. Was Java started with `--add-opens=java.base/java.nio=ALL-UNNAMED`? (See https://arrow.apache.org/docs/java/install.html)
        at net.snowflake.client.jdbc.internal.apache.arrow.memory.util.MemoryUtil.<clinit>(MemoryUtil.java:146)
        at net.snowflake.client.jdbc.internal.apache.arrow.memory.ArrowBuf.getDirectBuffer(ArrowBuf.java:231)
        at net.snowflake.client.jdbc.internal.apache.arrow.memory.ArrowBuf.nioBuffer(ArrowBuf.java:226)
        at net.snowflake.client.jdbc.internal.apache.arrow.vector.ipc.ReadChannel.readFully(ReadChannel.java:87)
        at net.snowflake.client.jdbc.internal.apache.arrow.vector.ipc.message.MessageSerializer.readMessageBody(MessageSerializer.java:728)
        at net.snowflake.client.jdbc.internal.apache.arrow.vector.ipc.message.MessageChannelReader.readNext(MessageChannelReader.java:67)
        at net.snowflake.client.jdbc.internal.apache.arrow.vector.ipc.ArrowStreamReader.loadNextBatch(ArrowStreamReader.java:145)
        at net.snowflake.client.jdbc.SnowflakeResultSetSerializableV1.setFirstChunkRowCountForArrow(SnowflakeResultSetSerializableV1.java:1127)
        at net.snowflake.client.jdbc.SnowflakeResultSetSerializableV1.create(SnowflakeResultSetSerializableV1.java:601)
        at net.snowflake.client.jdbc.SnowflakeResultSetSerializableV1.create(SnowflakeResultSetSerializableV1.java:497)
        at net.snowflake.client.core.SFResultSetFactory.getResultSet(SFResultSetFactory.java:34)
        at net.snowflake.client.core.SFStatement.executeQueryInternal(SFStatement.java:234)
        at net.snowflake.client.core.SFStatement.executeQuery(SFStatement.java:140)
        at net.snowflake.client.core.SFStatement.execute(SFStatement.java:776)
        at net.snowflake.client.core.SFStatement.execute(SFStatement.java:684)
        at net.snowflake.client.jdbc.SnowflakeStatementV1.executeQueryInternal(SnowflakeStatementV1.java:267)
        at net.snowflake.client.jdbc.SnowflakePreparedStatementV1.executeQuery(SnowflakePreparedStatementV1.java:122)
        at com.snowflake.snowpark.internal.ServerConnection.$anonfun$runQueryGetResult$1(ServerConnection.scala:388)
        at com.snowflake.snowpark.internal.ServerConnection.withValidConnection(ServerConnection.scala:925)
        at com.snowflake.snowpark.internal.ServerConnection.runQueryGetResult(ServerConnection.scala:383)
        at com.snowflake.snowpark.internal.ServerConnection.runQuery(ServerConnection.scala:359)
        at com.snowflake.snowpark.Session.cancelAll(Session.scala:154)
        at com.snowflake.snowpark.Session.close(Session.scala:1243)
        at com.snowflake.snowpark_java.Session.close(Session.java:484)
        at fhirtransformer.engine.SnowflakeConfig.logJavaJobStarted(SnowflakeConfig.java:153)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:365)
        at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:237)
        at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:168)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:178)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:171)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:149)
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:451)
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:384)
        at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:109)
        at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:80)
        at java.base/java.lang.Iterable.forEach(Iterable.java:75)
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118)
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112)
        at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:80)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:352)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1358)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1347)
        at fhirtransformer.StreamApp.main(StreamApp.java:12)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field long java.nio.Buffer.address accessible: module java.base does not "opens java.nio" to unnamed module @4617c264
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
        at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178)
        at java.base/java.lang.reflect.Field.setAccessible(Field.java:172)
        at net.snowflake.client.jdbc.internal.apache.arrow.memory.util.MemoryUtil.<clinit>(MemoryUtil.java:91)
        ... 51 more
[restartedMain] ERROR com.snowflake.snowpark.internal.ServerConnection - failed to execute query:
select system$cancel_all_queries(66284275835526)
[restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed
com.snowflake.snowpark.SnowparkClientException: Error Code: 0415, Error message: Failed to close this session. The error is: JDBC driver internal error: exception creating result java.lang.ExceptionInInitializerError at net.snowflake.client.jdbc.internal.apache.arrow.memory.ArrowBuf.getDirectBuffer(ArrowBuf.java:231).
        at com.snowflake.snowpark.internal.ErrorMessage$.createException(ErrorMessage.scala:420)
        at com.snowflake.snowpark.internal.ErrorMessage$.MISC_FAILED_CLOSE_SESSION(ErrorMessage.scala:379)
        at com.snowflake.snowpark.Session.close(Session.scala:1247)
        at com.snowflake.snowpark_java.Session.close(Session.java:484)
        at fhirtransformer.engine.SnowflakeConfig.logJavaJobStarted(SnowflakeConfig.java:153)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:365)
        at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:237)
        at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:168)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:178)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:171)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:149)
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:451)
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:384)
        at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:109)
        at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:80)
        at java.base/java.lang.Iterable.forEach(Iterable.java:75)
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118)
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112)
        at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:80)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:352)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1358)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1347)
        at fhirtransformer.StreamApp.main(StreamApp.java:12)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50)

build.gradle

plugins {
    id 'java'
    id 'java-library'
    id 'org.springframework.boot' version '3.2.1'
    id 'org.sonarqube' version '4.2.1.3168'
    id 'jacoco'
    id 'io.freefair.lombok' version '8.4'
}

apply plugin: 'io.spring.dependency-management'

group = 'fhirtransformer'
version = '1.0'
description = 'matchboxtransformer'
sourceCompatibility = 17

repositories {
    mavenCentral()
}

dependencies {
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    implementation 'org.springframework.boot:spring-boot'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-autoconfigure'
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.json:json:20230618'
    implementation 'org.javatuples:javatuples:1.2'
    testImplementation 'junit:junit:4.11'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.awaitility:awaitility:3.1.2'
    api 'com.snowflake:snowpark:1.10.0'
    api 'health.matchbox:matchbox-engine:3.3.3'
}

configurations.all {
   exclude group: 'ch.qos.logback', module: 'logback-core'
}

test {
    useJUnitPlatform()
}

jar {
    manifest {
        attributes 'Main-Class': 'fhirtransformer.StreamApp'
    }
}

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions