[ 
https://issues.apache.org/jira/browse/OOZIE-1403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Kanter updated OOZIE-1403:
---------------------------------

    Attachment: OOZIE-1403.patch

As I was looking at it more, the main issue is that the forkjoin checking code 
was making sure that we only transition to an action once; which normally 
shouldn't be allowed.  Because of the decision node, this was happening, but in 
this case we do want to allow it.  

The patch makes the forkjoin checking code more complicated to take into 
account a node's decision node ancestor.  (I also put a giant comment 
explaining what its doing because its kinda hard to follow the code).

In addition to the unit tests, I also tried out some workflows.
                
> forkjoin validation blocks some valid cases involving decision nodes
> --------------------------------------------------------------------
>
>                 Key: OOZIE-1403
>                 URL: https://issues.apache.org/jira/browse/OOZIE-1403
>             Project: Oozie
>          Issue Type: Bug
>    Affects Versions: 3.3.2
>            Reporter: Robert Kanter
>            Assignee: Robert Kanter
>             Fix For: trunk
>
>         Attachments: OOZIE-1403.patch
>
>
> As described 
> [here|https://issues.apache.org/jira/browse/OOZIE-1035?focusedCommentId=13676534&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13676534]
>  in OOZIE-1035, the new forkjoin checker code is blocking some valid cases 
> involving decision nodes where the decision nodes are inside the forkjoin; 
> when they are outside, its not a problem.
> 1) This uses a decision node to "insert" an action based on {{foo}}:
> {noformat}
> <fork>
>    <goto decision>
>    <goto join>
> </fork>
> <decision>
>    <if foo, goto A>
>    <else, goto B>
> </decision>
> <action A>
>    <ok to="B">
> </action A>
> <action B>
>    <ok to="join">
> </action B>
> <join>
> {noformat}
> 2) This uses a decision node to "replace" an action based on {{foo}}:
> {noformat}
> <fork>
>    <goto decision>
>    <goto join>
> </fork>
> <decision>
>    <if foo, goto A>
>    <else, goto B>
> </decision>
> <action A>
>    <ok to="join">
> </action A>
> <action B>
>    <ok to="join">
> </action B>
> <join>
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to