-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/3486/
-----------------------------------------------------------

Review request for oozie, Mohammad Islam and Angelo K. Huang.


Summary
-------

Validate fork and join at wf submission time
https://issues.apache.org/jira/browse/OOZIE-636

Brief description of algo:

A modified dfs algorithm is used. Two stacks, one for dfs traversal and other 
for maintaining fork join status, are kept.  When a fork is encountered during 
traversal, it is added to the forkjoin stack and number of paths associated 
with the fork is also stored.  When a node’s child is seen as a join, the join 
is added to the forkJoin stack and the no. of paths to it is updated. When the 
number of paths for fork and join are equal, then the fork/join pair is removed 
from the forkJoin stack and join is pushed to the dfsStack.

Nodes other than fork and join are only pushed to the dfs stack.
If a action node is seen, only the node's "ok-to" transition is considered


While(!stack.isEmpty()){
        Node n = DfsStack.pop()
        n.traversed =  true;
                If(n.type==fork){
                        ForkJoinStack.push(new Element(n, n.paths) );
                }
                List<Node> childs = getUnvisitedChildnodes(n)   
                For(Node n: childs){
                        If (n.type==join){
                        Boolean b=isForkJoinCleared(ForkJoinStack)      
                        If(!b){
                                Continue;
                        }
                        stack.push(n);
                        n.traversed =  true;
                }                               
}


This addresses bug OOZIE-636.
    https://issues.apache.org/jira/browse/OOZIE-636


Diffs
-----

  trunk/core/src/main/java/org/apache/oozie/ErrorCode.java 1230856 
  trunk/core/src/main/java/org/apache/oozie/workflow/lite/ForkJoinElement.java 
PRE-CREATION 
  trunk/core/src/main/java/org/apache/oozie/workflow/lite/LiteWorkflowApp.java 
1230856 
  
trunk/core/src/main/java/org/apache/oozie/workflow/lite/LiteWorkflowAppParser.java
 1230856 
  
trunk/core/src/test/java/org/apache/oozie/service/TestLiteWorkflowAppService.java
 1230856 
  
trunk/core/src/test/java/org/apache/oozie/workflow/lite/TestLiteWorkflowApp.java
 PRE-CREATION 
  trunk/core/src/test/resources/wf-schema-valid.xml 1230856 

Diff: https://reviews.apache.org/r/3486/diff


Testing
-------

Test case to validate fork-join added


Thanks,

Virag

Reply via email to