[
https://issues.apache.org/jira/browse/CALCITE-4393?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ruben Q L resolved CALCITE-4393.
--------------------------------
Resolution: Fixed
Fixed via
https://github.com/apache/calcite/commit/fbe69824ffb13f847d1db6e26f0030ddec7b0e8c
> 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
> Labels: pull-request-available
> Fix For: 1.27.0
>
> Time Spent: 2h 20m
> Remaining Estimate: 0h
>
> See discussion here:
> https://lists.apache.org/thread.html/red0fc146f78a196af6fdaa5393b2c0906e0a49361a1734a850185777%40%3Cdev.calcite.apache.org%3E
> {{ExceptionInInitializerError}} on 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.
> So far I have not been able to reproduce the issue with a unit test, neither
> on [Github CI|https://github.com/apache/calcite/pull/2251], nor in a local
> environment.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)