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

ExceptionInInitializerError caused by ImmutableBeans

    XMLWordPrintableJSON

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

            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: