I think, Is there a node that simply waits for a period of time before executing?
-------------------- DolphinScheduler(Incubator) Commtter Hemin Wen 温合民 [email protected] -------------------- wang <[email protected]> 于2020年7月9日周四 下午1:24写道: > Dependency node new feature: Wait for the dependency to start > Current Features > > When the current dependent node executes, if it is found that the > dependent task node has not started to execute, the node will be directly > judged as a failure. > > New Feature Target > > When the execution reaches the dependent node, if there is no ready in the > list of dependent task nodes, the node will wait for a while. If the > dependent task nodes are started within the waiting time, execution > continues; otherwise, the node fails to execute. > > Plan > Plan A > > By using the existing timeout judgment mechanism, waiting for the > dependent node to start and waiting for the dependent node to complete is > regarded as an equivalent state, so as to achieve the goal. In the original > mechanism, if the timeout attribute is not set, then a dependent task node > will wait indefinitely until it is completed when the task node has been > started; if the timeout attribute is set, then the waiting time is limited . > > If this scheme is used, the new dependent node will exhibit the following > behavior: > > If the timeout attribute is not set: > > If the dependent node finds that the dependent task node has not started, > the dependent node will wait indefinitely for it to start (the original one > failed directly); > The behavior of the dependent task node that has been started is the same > as before. > > If the timeout attribute is set: > > If the dependent node finds that the dependent task node has not started, > the dependent node will wait for it to start for a period of time, and if > the wait times out, it will be treated the same as the dependent task > running timeout; > The behavior of the dependent task node that has been started is the same > as before. > > Program advantages: > > Simple implementation, less code changes, and even the front end can be > left unchanged. > > Disadvantages: > > Cannot distinguish between two concepts of waiting to start and waiting to > complete (question: is it important for users to distinguish these two > concepts?) > Plan B > > A special delay-waiting attribute is added for dependent nodes. Although > this attribute is called "delay-waiting", it is closer to the "timeout > setting" at the conceptual level. > > Program advantages: > > Simpler, less code changes; > Ability to set supermarket time separately for waiting for dependency > start and waiting for completion. > > Disadvantages: > > The two attributes are similar in concept and appear redundant in design. > At last > > For the above problem, the dependent task node is not started, is > executing but timed out, and failed to run. I think they are all the > reasons for the dependent node execution failure, and there is no obvious > difference between them. > > I personally prefer Plan A. > > 依赖节点新特性:延时等待 > 目前特点 > > 当前依赖节点执行时,若发现被依赖任务节点尚未开始执行,该节点就会被直接判为失败。 > > 新特性目标效果 > > > 当执行到依赖节点时,若被依赖的任务节点列表中存在没有就绪的,那么该节点会等待一段时间。若果等待时间内被依赖任务节点都启动了,就继续执行;否则该节点执行失败。 > > 实现方案 > 方案A > > > 利用已有的超时判断机制,将等待被依赖节点启动和等待被依赖节点完成视为等价的状态,从而达到目标。在原有的机制中,如果没有设置超时属性,那么一个被依赖任务节点在已经启动的情况下,依赖节点会无限期地等待直到它完成;如果设置了超时属性,那么这个等待时间就有了限制。 > > 如果使用这个方案,那么新的依赖节点将会表现出以下行为: > > 如果没有设置超时属性: > > 如果依赖节点发现被依赖任务节点没有启动,依赖节点会无限期地等待它启动(原来的是直接失败); > 对于已经启动的被依赖任务节点,行为与以往相同。 > > 如果设置了超时属性: > > 如果依赖节点发现被依赖任务节点没有启动,依赖节点会在一段时间内地等待它启动,如果等待超时了,将与被依赖任务运行超时同等对待; > 对于已经启动的被依赖任务节点,行为与以往相同。 > > 方案优点: > > 实现简单,代码改动少,前端甚至可以不改。 > > 缺点: > > 前端同学可能会失业; > 不能够区分等待启动和等待完成两个概念(疑问:对于用户来说区分这两个概念重要吗?) > 方案B > > 为依赖节点专门新增一个延时等待的属性,这个属性虽然叫做“延时等待”,但它在概念层面上与“超时设置”更加贴近。 > > 方案优点: > > 较为简单,代码改动少; > 能够单独为等待依赖启动和等待依赖完成设置超市时间。 > > 缺点: > > 两个属性概念上雷同,显得设计冗余。 > 最后 > > 对于上面的问题,我认为被依赖任务节点未启动、正在执行但超时、运行失败都是依赖节点执行失败的原因,它们并没有明显的区别。 > > 我个人倾向于方案A。
