[ https://issues.apache.org/jira/browse/FLINK-18302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jark Wu closed FLINK-18302. --------------------------- Resolution: Fixed - master (1.12.0): ca1f7642c7120800f1ac93575dcdfa0223c097a4 - 1.11.0: 75e265c7dcb2805a94a74cc7fe08acdc826ddf36 > Sql client uses wrong class loader when execute INSERT statements > ----------------------------------------------------------------- > > Key: FLINK-18302 > URL: https://issues.apache.org/jira/browse/FLINK-18302 > Project: Flink > Issue Type: Bug > Components: Table SQL / Client > Reporter: Jark Wu > Assignee: Jark Wu > Priority: Critical > Fix For: 1.11.0 > > > Sql-client when execute INSERT statements does not use the user class loader > from ExecutionContext. This makes it impossible to run queries with UDF in it > if the dependencies are added with {{--jar}} flag. > This can be reproduced when I migrate {{SQLClientKafkaITCase}} to use DDL > (FLINK-18086). > It give exception: > {code} > Exception in thread "main" org.apache.flink.table.client.SqlClientException: > Unexpected exception. This is a bug. Please consider filing an issue. > at org.apache.flink.table.client.SqlClient.main(SqlClient.java:213) > Caused by: java.lang.RuntimeException: Error running SQL job. > at > org.apache.flink.table.client.gateway.local.LocalExecutor.executeUpdateInternal(LocalExecutor.java:595) > at > org.apache.flink.table.client.gateway.local.LocalExecutor.executeUpdate(LocalExecutor.java:515) > at > org.apache.flink.table.client.cli.CliClient.callInsert(CliClient.java:596) > at > org.apache.flink.table.client.cli.CliClient.callCommand(CliClient.java:315) > at java.util.Optional.ifPresent(Optional.java:159) > at org.apache.flink.table.client.cli.CliClient.open(CliClient.java:212) > at org.apache.flink.table.client.SqlClient.openCli(SqlClient.java:142) > at org.apache.flink.table.client.SqlClient.start(SqlClient.java:114) > at org.apache.flink.table.client.SqlClient.main(SqlClient.java:201) > Caused by: java.lang.RuntimeException: Could not execute program. > at > org.apache.flink.table.client.gateway.local.ProgramDeployer.deploy(ProgramDeployer.java:84) > at > org.apache.flink.table.client.gateway.local.LocalExecutor.executeUpdateInternal(LocalExecutor.java:592) > ... 8 more > Caused by: org.apache.flink.util.FlinkRuntimeException: > org.apache.flink.api.common.InvalidProgramException: Table program cannot be > compiled. This is a bug. Please file an issue. > at > org.apache.flink.table.runtime.generated.CompileUtils.compile(CompileUtils.java:68) > at > org.apache.flink.table.runtime.generated.GeneratedClass.compile(GeneratedClass.java:78) > at > org.apache.flink.table.runtime.generated.GeneratedClass.getClass(GeneratedClass.java:96) > at > org.apache.flink.table.runtime.operators.CodeGenOperatorFactory.getStreamOperatorClass(CodeGenOperatorFactory.java:51) > at > org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.preValidate(StreamingJobGraphGenerator.java:217) > at > org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.createJobGraph(StreamingJobGraphGenerator.java:154) > at > org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.createJobGraph(StreamingJobGraphGenerator.java:109) > at > org.apache.flink.streaming.api.graph.StreamGraph.getJobGraph(StreamGraph.java:850) > at > org.apache.flink.client.StreamGraphTranslator.translateToJobGraph(StreamGraphTranslator.java:52) > at > org.apache.flink.client.FlinkPipelineTranslationUtil.getJobGraph(FlinkPipelineTranslationUtil.java:43) > at > org.apache.flink.client.deployment.executors.PipelineExecutorUtils.getJobGraph(PipelineExecutorUtils.java:55) > at > org.apache.flink.client.deployment.executors.AbstractSessionClusterExecutor.execute(AbstractSessionClusterExecutor.java:57) > at > org.apache.flink.table.client.gateway.local.ProgramDeployer.deploy(ProgramDeployer.java:82) > ... 9 more > Caused by: > org.apache.flink.shaded.guava18.com.google.common.util.concurrent.UncheckedExecutionException: > org.apache.flink.api.common.InvalidProgramException: Table program cannot be > compiled. This is a bug. Please file an issue. > at > org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2203) > at > org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache.get(LocalCache.java:3937) > at > org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4739) > at > org.apache.flink.table.runtime.generated.CompileUtils.compile(CompileUtils.java:66) > ... 21 more > 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.runtime.generated.CompileUtils.doCompile(CompileUtils.java:81) > at > org.apache.flink.table.runtime.generated.CompileUtils.lambda$compile$1(CompileUtils.java:66) > at > org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4742) > at > org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527) > at > org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319) > at > org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282) > at > org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197) > ... 24 more > Caused by: org.codehaus.commons.compiler.CompileException: Line 13, Column > 30: Cannot determine simple type name "org" > {code} > The reason is that we only wrap classloader for the inner {{applyUpdate}}, > but not the outer {{executeUpdateInternal}}. However, > {{ProgramDeployer#deploy()}} in {{executeUpdateInternal}} will invoke code > compile which throws this exception. -- This message was sent by Atlassian Jira (v8.3.4#803005)