Question about OneInputTransformation

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Question about OneInputTransformation

Hongjian Peng
Hi Flink Community,

We use Flink SQL to calculate some metrics. In our SQL, we use window aggregation and we want to trigger the result earlier with different trigger strategies. 
So we get the window operators in the transformations and set the triggers by reflection.
It worked in Flink 1.7. But when we upgrade to Flink SQL 1.10+, we find the 'getOperator' method of the OneInputTransformation has been changed from

public OneInputStreamOperator<IN, OUT> getOperator() {
    return operator;
}


to

public OneInputStreamOperator<IN, OUT> getOperator() {
    return (OneInputStreamOperator<IN, OUT>) ((SimpleOperatorFactory) operatorFactory).getOperator();

}


In one of our OneInputTransformations, the operatorFactory is AsyncWaitOperatorFactory. When we call the getOperator method, it will throw

org.apache.flink.streaming.api.operators.async.AsyncWaitOperatorFactory cannot be cast to org.apache.flink.streaming.api.operators.SimpleOperatorFactory

Can we know why only cast the operatorFactory to SimpleOperatorFactory? Does it make sense that we should check the type of operatorFactory when we call this method?

--

Thanks,
Hongjian Peng