[ 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)