alei1206 commented on PR #14664:
URL: 
https://github.com/apache/dolphinscheduler/pull/14664#issuecomment-1660073073

   > 从我的观点来看,首先c1节点的某条分支是非执行时,并且这条非执行分支上有condition 
节点(以下成为c2),并且这个c2节点是或的关系。我会做以下操作 1.当或的条件没有全部判断完毕,我不会将c2 放入skip 节点 2.在c2 
节点信息上加入c2所依赖的各个dependNode的状态,例如c2节点依赖c1节点的那条分支是不执行的,我就设该dependNode 为false 3.当c2 
所依赖的dependNode全为false时,放入skipNodeList
   > 
   > ```
   > From my point of view, first of all, a branch of the c1 node is 
non-executable, and there is a condition node (hereinafter referred to as c2) 
on this non-executive branch, and this c2 node is an or relationship. I would 
do the following
   > 1. I will not put c2 into the skip node when all the conditions of or have 
not been judged
   > 2. Add the status of each dependNode that c2 depends on to the c2 node 
information. For example, the branch where c2 node depends on c1 node is not 
executed, so I set the dependNode to false
   > 3. When the dependNodes that c2 depends on are all false, put them into 
skipNodeList
   > ```
   > 
   > hi @alei1206 WDYT ? cc @Radeity
   
![image](https://github.com/apache/dolphinscheduler/assets/97011595/9a52efe3-d693-49cd-8923-b443f8bc291e)
   
   @fuchanghai  
你好,这部分我有其他看法,我认为这个问题的原因是特殊场景下c2无法被提交执行,而不是c2是否加入到skipNodeList的问题。如图(s1是sleep 
30s, s7是sleep 
10s),在此场景下,c2是不会被放入skipNodeList。当s7执行结束时,由于s1处于running状态,所以c2的dependNodes未完成,不会被提交执行。当s1完成后,会将s4放入到skipNodeList,DolphinScheduler只会检查c2节点是否需要被放入skipNodeList,而不会检查是否需要执行,造成c2无法被提交执行。我所做的是获取c1之后所有被跳过的节点,然后判断被跳过节点后面是否存在Condition类型任务(如c2)。如果有则将其加入到队列并尝试提交执行。如果c2不满足执行条件,则在后续逻辑中会被移除队列。
   
   > 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to