Zhu Zhu created FLINK-14870:
-------------------------------
Summary: Introducing non-nullable assumption for task slot sharing group
Key: FLINK-14870
URL:
https://issues.apache.org/jira/browse/FLINK-14870 Project: Flink
Issue Type: Improvement
Components: Runtime / Coordination
Affects Versions: 1.10.0
Reporter: Zhu Zhu
In runtime, a null slot sharing group means the vertex should be run in an individual slot which is not shared with other vertices.
However, at the moment, there is no way to set the slot sharing group of a vertex to null in production. This is because {{StreamGraphGenerator}} would always assign a non-null slot sharing group to an operator({{StreamNode}}), and that would be the group of the generated {{JobVertex}}. (In the case of {{DataSet}}, all vertices are in the "default" group.)
Moreover, currently users are already able to force an operator to run in an individual slot by specify a different slot sharing group key to that operator.
So looks that supporting null slot sharing groups in runtime does not make much sense. And it's making things more complex, with codes like {{@Nullable}} annotations for slot sharing group, task required resources calculations, and single task slot allocation.
To make runtime code base and future development simpler, I'd propose to introduce the assumption that task slot sharing group should not be null.
The detailed proposal is:
1. In {{StreamingJobGraphGenerator}}, we check to ensure the slot sharing group key of a {{StreamNode}} is non-null, so that we always set a non-null {{SlotSharingGroup}} to a JobVertex
2. Remove all the {{@Nullable}} annotations for {{SlotSharingGroup}} and {{SlotSharingGroupID}} in several classes
3. Always use the slot sharing group resources as the physical slot resources for a task
4. Remove {{SchedulerImp#allocateSingleSlot}} and the related code paths
cc [~chesnay] [~gjy] [~trohrmann]
--
This message was sent by Atlassian Jira
(v8.3.4#803005)