[ https://issues.apache.org/jira/browse/FLINK-35117?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martijn Visser closed FLINK-35117. ---------------------------------- Fix Version/s: 1.20.2 2.1.0 2.0.1 Resolution: Fixed Fixed in apache/flink master: bec57c16c719e2bb0045757a183e114691eca0e7 release-2.0: 702a985e993fcd926dea28e42dc17d29ce09ab63 release-1.19: 35e37312c1a66bd18f4798f8f96aa0ac79197b25 > AsyncScalarFunction has a dependency issue. > ------------------------------------------- > > Key: FLINK-35117 > URL: https://issues.apache.org/jira/browse/FLINK-35117 > Project: Flink > Issue Type: Bug > Components: Table SQL / Planner > Affects Versions: 1.19.0 > Environment: image: 1.19.0-scala_2.12-java11 > Reporter: roland > Assignee: Martijn Visser > Priority: Major > Labels: easyfix, pull-request-available > Fix For: 1.20.2, 2.1.0, 2.0.1 > > > Hi, > > I found a ClassNotFound exception when using Flink 1.19's > AsyncScalarFunction. > > *Stack trace:* > > {quote}Caused by: java.lang.ClassNotFoundException: > org.apache.commons.text.StringSubstitutor > at java.net.URLClassLoader.findClass(Unknown Source) ~[?:?] > at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?] > at > org.apache.flink.core.classloading.ComponentClassLoader.loadClassFromComponentOnly(ComponentClassLoader.java:150) > ~[flink-dist-1.19.0.jar:1.19.0] > at > org.apache.flink.core.classloading.ComponentClassLoader.loadClass(ComponentClassLoader.java:113) > ~[flink-dist-1.19.0.jar:1.19.0] > at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?] > at > org.apache.flink.table.planner.codegen.AsyncCodeGenerator.generateProcessCode(AsyncCodeGenerator.java:173) > ~[?:?] > at > org.apache.flink.table.planner.codegen.AsyncCodeGenerator.generateFunction(AsyncCodeGenerator.java:77) > ~[?:?] > at > org.apache.flink.table.planner.plan.nodes.exec.common.CommonExecAsyncCalc.getAsyncFunctionOperator(CommonExecAsyncCalc.java:146) > ~[?:?] > at > org.apache.flink.table.planner.plan.nodes.exec.common.CommonExecAsyncCalc.createAsyncOneInputTransformation(CommonExecAsyncCalc.java:126) > ~[?:?] > at > org.apache.flink.table.planner.plan.nodes.exec.common.CommonExecAsyncCalc.translateToPlanInternal(CommonExecAsyncCalc.java:89) > ~[?:?] > at > org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateToPlan(ExecNodeBase.java:168) > ~[?:?] > at > org.apache.flink.table.planner.plan.nodes.exec.ExecEdge.translateToPlan(ExecEdge.java:259) > ~[?:?] > at > org.apache.flink.table.planner.plan.nodes.exec.common.CommonExecCalc.translateToPlanInternal(CommonExecCalc.java:94) > ~[?:?] > at > org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateToPlan(ExecNodeBase.java:168) > ~[?:?] > at > org.apache.flink.table.planner.plan.nodes.exec.ExecEdge.translateToPlan(ExecEdge.java:259) > ~[?:?] > at > org.apache.flink.table.planner.plan.nodes.exec.stream.StreamExecSink.translateToPlanInternal(StreamExecSink.java:177) > ~[?:?] > at > org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateToPlan(ExecNodeBase.java:168) > ~[?:?] > at > org.apache.flink.table.planner.delegation.StreamPlanner.$anonfun$translateToPlan$1(StreamPlanner.scala:85) > ~[?:?] > {quote} > > *Root cause:* > > `PlannerModule` uses a URLClassloader to load class and has an exceptional > list to load owner owned classes: > > {code:java} > class PlannerModule { > /** > * The name of the table planner dependency jar, bundled with > flink-table-planner-loader module > * artifact. > */ > static final String FLINK_TABLE_PLANNER_FAT_JAR = > "flink-table-planner.jar"; > private static final String HINT_USAGE = > "mvn clean package -pl > flink-table/flink-table-planner,flink-table/flink-table-planner-loader > -DskipTests"; > private static final String[] OWNER_CLASSPATH = > Stream.concat( > > Arrays.stream(CoreOptions.PARENT_FIRST_LOGGING_PATTERNS), > Stream.of( > // These packages are shipped either by > // flink-table-runtime or flink-dist > itself > "org.codehaus.janino", > "org.codehaus.commons", > "org.apache.commons.lang3", > "org.apache.commons.math3", > // with hive dialect, hadoop jar should > be in classpath, > // also, we should make it loaded by > owner classloader, > // otherwise, it'll throw class not found > exception > // when initialize HiveParser which > requires hadoop > "org.apache.hadoop")) > .toArray(String[]::new); {code} > But the group of `org.apache.commons.text` is not on the list. > > *Fix:* > Add `org.apache.commons.text` to the list -- This message was sent by Atlassian Jira (v8.20.10#820010)