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)

Reply via email to