[ 
https://issues.apache.org/jira/browse/CALCITE-4393?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ruben Q L updated CALCITE-4393:
-------------------------------
    Description: 
See discussion here: 
https://lists.apache.org/thread.html/red0fc146f78a196af6fdaa5393b2c0906e0a49361a1734a850185777%40%3Cdev.calcite.apache.org%3E

ExceptionInInitializerErroron WebSphere 9 (on Ubuntu) when trying to start an 
application that uses Calcite (shaded) library. The exception message reads:
{noformat}
 **         error [-]: Unexpected error.
 **               ...
 **               Caused by: java.lang.BootstrapMethodError: 
java.lang.ExceptionInInitializerError
 **               
com.onwbp.org.apache.calcite.sql.type.InferTypes.<clinit>(InferTypes.java:41)
 **               
com.onwbp.org.apache.calcite.sql.fun.SqlMultisetSetOperator.<init>(SqlMultisetSetOperator.java:43)
 **               
com.onwbp.org.apache.calcite.sql.fun.SqlStdOperatorTable.<clinit>(SqlStdOperatorTable.java:118)
 **               
com.onwbp.org.apache.calcite.adapter.enumerable.RexToLixTranslator.<clinit>(RexToLixTranslator.java:93)
 **               java.lang.Class.forNameImpl(Native Method)
 **               java.lang.Class.forName(Class.java:348)
 **               
java.lang.invoke.MethodType.nonPrimitiveClassFromString(MethodType.java:311)
 **               
java.lang.invoke.MethodType.parseIntoClasses(MethodType.java:373)
 **               
java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:286)
 **               java.lang.invoke.MethodHandle.getCPMethodTypeAt(Native Method)
 **               
java.lang.invoke.MethodHandle.resolveInvokeDynamic(MethodHandle.java:849)
 **               ... 74 more
 **               Caused by: java.lang.ExceptionInInitializerError
 **               java.lang.J9VMInternals.ensureError(J9VMInternals.java:141)
 **               
java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:130)
 **               java.lang.Class.forNameImpl(Native Method)
 **               java.lang.Class.forName(Class.java:348)
 **               
java.lang.invoke.MethodType.nonPrimitiveClassFromString(MethodType.java:311)
 **               
java.lang.invoke.MethodType.parseIntoClasses(MethodType.java:373)
 **               
java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:286)
 **               java.lang.invoke.MethodHandle.getCPMethodTypeAt(Native Method)
 **               
java.lang.invoke.MethodHandle.resolveInvokeDynamic(MethodHandle.java:849)
 **               ... 85 more
 **               Caused by: java.lang.NullPointerException
 **               
com.onwbp.org.apache.calcite.sql.SqlCallBinding.<clinit>(SqlCallBinding.java:60)
 **               ... 92 more
 ****** 1 errors, 5 infos. 
{noformat}

As we can see there is a NPE in 
[SqlCallBinding:60|https://github.com/apache/calcite/blob/2e9edae7fc57ab9c9c7c097008724ac99a1791a3/core/src/main/java/org/apache/calcite/sql/SqlCallBinding.java#L60],
 when it tries to call a method on {{SqlStdOperatorTable.DEFAULT}}, which seems 
to be null.

According to the logs, what I think is happening is a circular dependency issue 
when classes get loaded (more details in first comment).
However, so far I have only seen this error in WebSphere, in other environments 
the same application is correctly initialized and launched, and this exception 
does not happen.
Since WebSphere uses IBM's own JVM, my hypothesis is that its class loader 
follows a different (and unlucky) order to load Calcite classes.


  was:
See discussion here: 
https://lists.apache.org/thread.html/red0fc146f78a196af6fdaa5393b2c0906e0a49361a1734a850185777%40%3Cdev.calcite.apache.org%3E

ExceptionInInitializerErroron WebSphere 9 (on Ubuntu) when trying to start an 
application that uses Calcite (shaded) library. The exception message reads:
{noformat}
 **         error [-]: Unexpected error.
 **               ...
 **               Caused by: java.lang.BootstrapMethodError: 
java.lang.ExceptionInInitializerError
 **               
com.onwbp.org.apache.calcite.sql.type.InferTypes.<clinit>(InferTypes.java:41)
 **               
com.onwbp.org.apache.calcite.sql.fun.SqlMultisetSetOperator.<init>(SqlMultisetSetOperator.java:43)
 **               
com.onwbp.org.apache.calcite.sql.fun.SqlStdOperatorTable.<clinit>(SqlStdOperatorTable.java:118)
 **               
com.onwbp.org.apache.calcite.adapter.enumerable.RexToLixTranslator.<clinit>(RexToLixTranslator.java:93)
 **               java.lang.Class.forNameImpl(Native Method)
 **               java.lang.Class.forName(Class.java:348)
 **               
java.lang.invoke.MethodType.nonPrimitiveClassFromString(MethodType.java:311)
 **               
java.lang.invoke.MethodType.parseIntoClasses(MethodType.java:373)
 **               
java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:286)
 **               java.lang.invoke.MethodHandle.getCPMethodTypeAt(Native Method)
 **               
java.lang.invoke.MethodHandle.resolveInvokeDynamic(MethodHandle.java:849)
 **               ... 74 more
 **               Caused by: java.lang.ExceptionInInitializerError
 **               java.lang.J9VMInternals.ensureError(J9VMInternals.java:141)
 **               
java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:130)
 **               java.lang.Class.forNameImpl(Native Method)
 **               java.lang.Class.forName(Class.java:348)
 **               
java.lang.invoke.MethodType.nonPrimitiveClassFromString(MethodType.java:311)
 **               
java.lang.invoke.MethodType.parseIntoClasses(MethodType.java:373)
 **               
java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:286)
 **               java.lang.invoke.MethodHandle.getCPMethodTypeAt(Native Method)
 **               
java.lang.invoke.MethodHandle.resolveInvokeDynamic(MethodHandle.java:849)
 **               ... 85 more
 **               Caused by: java.lang.NullPointerException
 **               
com.onwbp.org.apache.calcite.sql.SqlCallBinding.<clinit>(SqlCallBinding.java:60)
 **               ... 92 more
 ****** 1 errors, 5 infos. 
{noformat}

As we can see there is a NPE in 
[SqlCallBinding:60|https://github.com/apache/calcite/blob/2e9edae7fc57ab9c9c7c097008724ac99a1791a3/core/src/main/java/org/apache/calcite/sql/SqlCallBinding.java#L60],
 when it tries to call a method on SqlStdOperatorTable.DEFAULT, which seems to 
be null.

According to the logs, what I think is happening is a circular dependency issue 
when classes get loaded (more details in first comment).
However, so far I have only seen this error in WebSphere, in other environments 
the same application is correctly initialized and launched, and this exception 
does not happen.
Since WebSphere uses IBM's own JVM, my hypothesis is that its class loader 
follows a different (and unlucky) order to load Calcite classes.



> ExceptionInInitializerError due to NPE in SqlCallBinding caused by circular 
> dependency
> --------------------------------------------------------------------------------------
>
>                 Key: CALCITE-4393
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4393
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Ruben Q L
>            Assignee: Ruben Q L
>            Priority: Major
>             Fix For: 1.27.0
>
>
> See discussion here: 
> https://lists.apache.org/thread.html/red0fc146f78a196af6fdaa5393b2c0906e0a49361a1734a850185777%40%3Cdev.calcite.apache.org%3E
> ExceptionInInitializerErroron WebSphere 9 (on Ubuntu) when trying to start an 
> application that uses Calcite (shaded) library. The exception message reads:
> {noformat}
>  **         error [-]: Unexpected error.
>  **               ...
>  **               Caused by: java.lang.BootstrapMethodError: 
> java.lang.ExceptionInInitializerError
>  **               
> com.onwbp.org.apache.calcite.sql.type.InferTypes.<clinit>(InferTypes.java:41)
>  **               
> com.onwbp.org.apache.calcite.sql.fun.SqlMultisetSetOperator.<init>(SqlMultisetSetOperator.java:43)
>  **               
> com.onwbp.org.apache.calcite.sql.fun.SqlStdOperatorTable.<clinit>(SqlStdOperatorTable.java:118)
>  **               
> com.onwbp.org.apache.calcite.adapter.enumerable.RexToLixTranslator.<clinit>(RexToLixTranslator.java:93)
>  **               java.lang.Class.forNameImpl(Native Method)
>  **               java.lang.Class.forName(Class.java:348)
>  **               
> java.lang.invoke.MethodType.nonPrimitiveClassFromString(MethodType.java:311)
>  **               
> java.lang.invoke.MethodType.parseIntoClasses(MethodType.java:373)
>  **               
> java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:286)
>  **               java.lang.invoke.MethodHandle.getCPMethodTypeAt(Native 
> Method)
>  **               
> java.lang.invoke.MethodHandle.resolveInvokeDynamic(MethodHandle.java:849)
>  **               ... 74 more
>  **               Caused by: java.lang.ExceptionInInitializerError
>  **               java.lang.J9VMInternals.ensureError(J9VMInternals.java:141)
>  **               
> java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:130)
>  **               java.lang.Class.forNameImpl(Native Method)
>  **               java.lang.Class.forName(Class.java:348)
>  **               
> java.lang.invoke.MethodType.nonPrimitiveClassFromString(MethodType.java:311)
>  **               
> java.lang.invoke.MethodType.parseIntoClasses(MethodType.java:373)
>  **               
> java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:286)
>  **               java.lang.invoke.MethodHandle.getCPMethodTypeAt(Native 
> Method)
>  **               
> java.lang.invoke.MethodHandle.resolveInvokeDynamic(MethodHandle.java:849)
>  **               ... 85 more
>  **               Caused by: java.lang.NullPointerException
>  **               
> com.onwbp.org.apache.calcite.sql.SqlCallBinding.<clinit>(SqlCallBinding.java:60)
>  **               ... 92 more
>  ****** 1 errors, 5 infos. 
> {noformat}
> As we can see there is a NPE in 
> [SqlCallBinding:60|https://github.com/apache/calcite/blob/2e9edae7fc57ab9c9c7c097008724ac99a1791a3/core/src/main/java/org/apache/calcite/sql/SqlCallBinding.java#L60],
>  when it tries to call a method on {{SqlStdOperatorTable.DEFAULT}}, which 
> seems to be null.
> According to the logs, what I think is happening is a circular dependency 
> issue when classes get loaded (more details in first comment).
> However, so far I have only seen this error in WebSphere, in other 
> environments the same application is correctly initialized and launched, and 
> this exception does not happen.
> Since WebSphere uses IBM's own JVM, my hypothesis is that its class loader 
> follows a different (and unlucky) order to load Calcite classes.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to