[ 
https://issues.apache.org/jira/browse/OOZIE-3350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16665821#comment-16665821
 ] 

wang jinyin commented on OOZIE-3350:
------------------------------------

If we're walking an "okTo" path and the nodes are not Kill/Join/End, we have to 
make sure that only a single "okTo" path exists to the current node.
 
The "topDecisionParent" represents the eldest decision in the chain that we've 
gone through. For example, let's assume
         * that D1, D2, D3 are decision nodes and A is an action node.
         *
         * D1-->D2-->D3---> ... (rest of the WF)
         *  |   |    |
         *  |   |    |
         *  |   |    +----> +---+
         *  |   +---------> | A |
         *  +-------------> +---+
         *
In this case, there are three "okTo" paths to "A" but it's still a valid 
workflow because the eldest decision node is D1 and during every run, there is 
only one possible execution path that leads to A (D1->A, D1->D2->A 
or(D1->D2->D3->A).

but in this case, we can reach action_E from two parallel path (decision_A -> 
frok_B -> action_C -> action_E, decision_A -> frok_B -> action_D -> action_E). 
muutiple "okTo" path exists to the action_E, should throw an exception.
but action_C and action_D under same eldest decision(decision_A), this logistic 
error will be ignore. 

> forkjoin validation error when "multiple ok to same node" under decision node
> -----------------------------------------------------------------------------
>
>                 Key: OOZIE-3350
>                 URL: https://issues.apache.org/jira/browse/OOZIE-3350
>             Project: Oozie
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 4.3.1
>            Reporter: wang jinyin
>            Priority: Major
>             Fix For: trunk
>
>   Original Estimate: 120h
>  Remaining Estimate: 120h
>
> when "multiple ok to same node" under decision node, forkjoin validation 
> error.
>  
> such as below example, 'action_C' and 'action_D' both transition to 
> 'action_E'.
> But, because they are under same topDecisionParent 'decision_A', validator 
> will not throw any exception. 
>  
> {quote}<decision name = 'decision_A'>
>     <case to = 'fork_B'></case>
>     <case to = 'action_G'></case>
> </decision>
> <fork name = 'fork_B'>
>     <path start = 'action_C'/>
>     <path start = 'action_D'/>
> </fork>
> <action name = 'action_C'>
>     <ok to = 'action_E'>
>     <error to = 'kill'>
> </action>
> <action name = 'action_D'>
>     <ok to = 'action_E'>
>     <error to = 'kill'>
> </action>
> <action name = 'action_E'>
>     <ok to = 'join_F'>
>     <error to = 'kill'>
> </action>
> <join name = 'join_F'>
>     <ok to = 'action_H'>
>     <error to = 'kill'>
> </join>
> <action name = 'action_G'>
>     <ok to = 'action_H'>
>     <error to = 'kill'>
> </action>
> <action name = 'action_H'>
>     <ok to = 'end'>
>     <error to = 'kill'>
> </action>
> {quote}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to