Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-4492

ExceptionInInitializerError caused by ImmutableBeans

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Not A Problem
    • 1.26.0
    • None
    • core
    • None

    Description

      While testing an application that uses Calcite, the following error is observed at start-up on a Websphere9 environment (IBM J9 VM, Java8, Ubuntu):

      Caused by: java.lang.ExceptionInInitializerError
          at java.lang.J9VMInternals.ensureError(J9VMInternals.java:141)
          at java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:130)
      ...
      Caused by: java.lang.RuntimeException: while binding method public default java.lang.Object com.onwbp.org.apache.calcite.plan.RelRule$Config.as(java.lang.Class)
          at com.onwbp.org.apache.calcite.util.ImmutableBeans.makeDef(ImmutableBeans.java:285)
          at com.onwbp.org.apache.calcite.util.ImmutableBeans.access$000(ImmutableBeans.java:51)
          at com.onwbp.org.apache.calcite.util.ImmutableBeans$1.load(ImmutableBeans.java:64)
          at com.onwbp.org.apache.calcite.util.ImmutableBeans$1.load(ImmutableBeans.java:61)
          at com.onwbp.com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
          at com.onwbp.com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
          at com.onwbp.com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
          at com.onwbp.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
          at com.onwbp.com.google.common.cache.LocalCache.get(LocalCache.java:3951)
          at com.onwbp.com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974)
          at com.onwbp.com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958)
          at com.onwbp.org.apache.calcite.util.ImmutableBeans.create_(ImmutableBeans.java:91)
          at com.onwbp.org.apache.calcite.util.ImmutableBeans.create(ImmutableBeans.java:72)
          at com.onwbp.org.apache.calcite.plan.RelRule$Config.<clinit>(RelRule.java:121)
      <Break in method call trace.>
      ... 73 more
      Caused by: java.lang.IllegalAccessException: 'com.onwbp.org.apache.calcite.plan.RelRule$Config' no access to: 'com.onwbp.org.apache.calcite.plan.RelRule$Config.as:(Config,Class)Object/invokeSpecial'
          at java.lang.invoke.MethodHandles$Lookup.checkAccess(MethodHandles.java:333)
          at java.lang.invoke.MethodHandles$Lookup.unreflectSpecial(MethodHandles.java:970)
          at com.onwbp.org.apache.calcite.util.ImmutableBeans.makeDef(ImmutableBeans.java:283)
      ... 86 more
      

      It would seem there is an issue around org.apache.calcite.util.ImmutableBeans and the reflection mechanisms that it uses, in the context of RelRule#Config (and specifically the default method RelRule$Config.as).

      Googling a bit, I found the following Flink ticket FLINK-19820, which has a very similar exception message. In that case it was seen with Java9 in a Debian environment, and the problem is also around ImmutableBeans in RelBuilder#Config, and again the issue seems generated by a default method (RelBuilder$Config.toBuilder).
      The Flink ticket was closed as "Won't Fix" just because Flink does not support Java9 (and apparently the issue did not occur with the Flink-supported Java versions), but the underlying Calcite problem was never tackled (and Calcite is supposed to work on Java9).

      Attachments

        Issue Links

          Activity

            No work has yet been logged on this issue.

            People

              rubenql Ruben Q L
              rubenql Ruben Q L
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: