Mingliang Liu created FLINK-36604:
-------------------------------------
Summary: StreamingJobGraphGenerator::setOperatorConfig checks
input serializer lengh
Key: FLINK-36604
URL: https://issues.apache.org/jira/browse/FLINK-36604
Project: Flink
Issue Type: Improvement
Components: API / DataStream
Affects Versions: 1.20.0, 1.18.1
Reporter: Mingliang Liu
Currently \{{StreamingJobGraphGenerator::setOperatorConfig}} does not check the
input serializers length, and always assume it's valid. Actually, as
serializers can be null and hence filtered out, the input serializers array
could be empty. When this happens, the error message is cryptical to users, for
example:
{code}
java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at
org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.setOperatorConfig(StreamingJobGraphGenerator.java:1081)
at
org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.createChain(StreamingJobGraphGenerator.java:740)
at
org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.createChain(StreamingJobGraphGenerator.java:688)
at
org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.setChaining(StreamingJobGraphGenerator.java:654)
at
org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.createJobGraph(StreamingJobGraphGenerator.java:254)
at
org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.createJobGraph(StreamingJobGraphGenerator.java:160)
at
org.apache.flink.streaming.api.graph.StreamGraph.getJobGraph(StreamGraph.java:1035)
at
org.apache.flink.client.StreamGraphTranslator.translateToJobGraph(StreamGraphTranslator.java:56)
at
org.apache.flink.client.FlinkPipelineTranslationUtil.getJobGraph(FlinkPipelineTranslationUtil.java:45)
at
org.apache.flink.client.deployment.executors.PipelineExecutorUtils.getJobGraph(PipelineExecutorUtils.java:61)
at
org.apache.flink.client.deployment.executors.LocalExecutor.getJobGraph(LocalExecutor.java:105)
at
org.apache.flink.client.deployment.executors.LocalExecutor.execute(LocalExecutor.java:82)
at
org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.executeAsync(StreamExecutionEnvironment.java:2238)
at
org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:2125)
at
org.apache.flink.streaming.api.environment.LocalStreamEnvironment.execute(LocalStreamEnvironment.java:68)
at
org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:2099)
at
org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:2077)
{code}
We can add a precondition check and report meaningful error message for
debugging.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)