Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-7490

UDF Agg throws Exception when flink-table is loaded with AppClassLoader

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 1.3.1, 1.4.0
    • Fix Version/s: 1.3.4, 1.4.0, 1.5.0
    • Component/s: Table SQL / API
    • Labels:
      None

      Description

      When a UDF aggregation for the Batch Table API is defined in the FlinkUserCodeClassLoader and the Table API itself is loaded in the AppClassLoader (the jar is included in the lib directory) this exception is triggered:

      Exception

      java.lang.Exception: The user defined 'open()' method caused an exception: Table program cannot be compiled. This is a bug. Please file an issue.
      at org.apache.flink.runtime.operators.BatchTask.run(BatchTask.java:485)
      at org.apache.flink.runtime.operators.BatchTask.invoke(BatchTask.java:355)
      at org.apache.flink.runtime.taskmanager.Task.run(Task.java:712)
      at java.lang.Thread.run(Thread.java:748)
      Caused by: org.apache.flink.api.common.InvalidProgramException: Table program cannot be compiled. This is a bug. Please file an issue.
      at org.apache.flink.table.codegen.Compiler$class.compile(Compiler.scala:36)
      at org.apache.flink.table.runtime.aggregate.DataSetAggFunction.compile(DataSetAggFunction.scala:35)
      at org.apache.flink.table.runtime.aggregate.DataSetAggFunction.open(DataSetAggFunction.scala:49)
      at org.apache.flink.api.common.functions.util.FunctionUtils.openFunction(FunctionUtils.java:36)
      at org.apache.flink.runtime.operators.BatchTask.run(BatchTask.java:481)
      ... 3 more
      Caused by: org.codehaus.commons.compiler.CompileException: Line 5, Column 13: Cannot determine simple type name "org"
      at org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11672)
      at org.codehaus.janino.UnitCompiler.getReferenceType(UnitCompiler.java:6416)
      at org.codehaus.janino.UnitCompiler.getReferenceType(UnitCompiler.java:6177)
      ...

      Upon inspecting the code I think this may be due to the usage of 'getClass.getClassLoader' instead of 'getRuntimeContext.getUserCodeClassLoader' as an argument 'compile' in the method 'open' of class org.apache.flink.table.runtime.aggregate.DataSetAggFunction.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                fhueske Fabian Hueske
                Reporter:
                migulorama Miguel Rui Pereira Marques
              • Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: