OHDSI / WhiteRabbit

WhiteRabbit is a small application that can be used to analyse the structure and contents of a database as preparation for designing an ETL. It comes with RabbitInAHat, an application for interactive design of an ETL to the OMOP Common Data Model with the help of the the scan report generated by White Rabbit.
http://ohdsi.github.io/WhiteRabbit
Apache License 2.0
185 stars 90 forks source link

When using JDK >= 16 with Snowflake, authentication fails with a stack trace #410

Open janblom opened 7 months ago

janblom commented 7 months ago

Describe the bug There is a documented problem with the Snowflake JDBC driver when running WhiteRabbit with a JDK/JRE version 16 or newer. See here for an in depth description and the advised short term workarounds, see here for the issue on github

To Reproduce Steps to reproduce the behavior: Using WhiteRabbit either throuhg the GUI or CLI, when WhiteRabbit attempts to connect to Snowflake, a failure will be reported with a stack trace. This stack trace will contain a fragment similar to the following:

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 @40f9161a
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
        at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:177)
        at java.base/java.lang.reflect.Field.setAccessible(Field.java:171)
        at net.snowflake.client.jdbc.internal.apache.arrow.memory.util.MemoryUtil.<clinit>(MemoryUtil.java:87)

Expected behavior WhiteRabbit should connect to Snowflake and continue as normal.

Workaround Please implement the workaround as documented here (under Solution by setting the environment variable JAVA_OPTS to the appropriate value for JDK 16 or JDK 17. Please not that JAVA_OPTS should be set and available in the environment before you start WhiteRabbit.

Additional context This only applies to WhiteRabbit v1.0.0 and higher (and the release candidates).

This issue needs to be solved in the dependencies mentioned by Snowflake. There is no universal solution available that would work in all Java/JDK versions supported by WhiteRabbit.