You cannot have node NJ pointing back to the join node in this case. If any of the forks fail, the join node J is not to be reached (since its an OK-to transition), and hence when you are re-using the join node J, the fork-join validation fails and it manifests as a loop. You should instead point both J and NJ to s(3), since you want s(3) to be computed in both successful and error transitions.
>From Oozie docs, However, if Oozie is preventing a workflow from being submitted and you are very certain that it should work, you can disable forkjoin validation so that Oozie will accept the workflow. To disable this validation just for a specific workflow, simply set “oozie.wf.validate.ForkJoin” to false in the job.properties file. To disable this validation for all workflows, simply set =oozie.validate.ForkJoin= to false in the oozie-site.xml file. Disabling this validation is determined by the AND of both of these properties, so it will be disabled if either or both are set to false and only enabled if both are set to true (or not specified). — Mona On 8/15/14, 10:36 AM, "KayVajj" <[email protected]<mailto:[email protected]>> wrote: Hi, I'm using "oozie-3.3.0-cdh4.2.1". The key structure of my workflow is as below. s(i) -- represents initial nodes. -OK- is ok transition -ERROR- is error transition s(1) -OK- --> s(2) -ERROR- --> N (Notify Node) s(2) -- Forks into F(1)..F(7) For each Forked job F(i) -OK- --> J(join node) -ERROR- --> NJ (Notify and Join node) NJ -OK- --> J -ERROR- --> J J --> s(3) N (Notify Node) -OK- --> fail -ERROR- --> fail The intent is for node s(3) to be reached even if any or all of the forked node F(1)..F(7) fail. All the forked nodes go to node NJ (Notify and Join) and NJ whether successful or not should go to J. In a case when all the forked nodes fail, I am getting a Loop detected in run time error. Can you please tell me where the issue is? Your inputs are appreciated. Thanks K
