In rather specific configurations, it may occur that a loop head is re-scheduled for execution before the loop head was fully executed. The reason for this is that the loop head is activated a second time by the initial loop heads before these were disposed. Therefore, we must discern in the activation of ExecutionStages for LoopHeadOperators what the state is:
initializing: try to activate from the initial loop inputs
running: try to activate from the iteration inputs
finished: should not happen; do never activate
This comes at the expense of coupling the LoopHeadOperators closer with the CrossPlatformExecutor but it is logically necessary and we already have some coupling of loops with the execution code anyway.
In rather specific configurations, it may occur that a loop head is re-scheduled for execution before the loop head was fully executed. The reason for this is that the loop head is activated a second time by the initial loop heads before these were disposed. Therefore, we must discern in the activation of
ExecutionStage
s forLoopHeadOperator
s what the state is:This comes at the expense of coupling the
LoopHeadOperator
s closer with theCrossPlatformExecutor
but it is logically necessary and we already have some coupling of loops with the execution code anyway.