Repository: oozie Updated Branches: refs/heads/master 6b6f42c33 -> 883c7556d
http://git-wip-us.apache.org/repos/asf/oozie/blob/883c7556/core/src/test/resources/invalidGraphWF.xml ---------------------------------------------------------------------- diff --git a/core/src/test/resources/invalidGraphWF.xml b/core/src/test/resources/invalidGraphWF.xml deleted file mode 100644 index 8103bca..0000000 --- a/core/src/test/resources/invalidGraphWF.xml +++ /dev/null @@ -1,507 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<workflow-app xmlns="uri:oozie:workflow:0.2" name="sm3-segment-3908-251483"> - <start to="or_0_1"/> - <kill name="kill"> - <message>killed message</message> - </kill> - <action name="or_0_1"> - <pig> - <job-tracker>${jobTracker}</job-tracker> - <name-node>${nameNode}</name-node> - <prepare> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_0_1"/> - </prepare> - <configuration> - <property> - <name>mapreduce.reduce.input.limit</name> - <value>-1</value> - </property> - <property> - <name>mapred.job.queue.name</name> - <value>${queueName}</value> - </property> - <property> - <name>mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>oozie.launcher.mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>mapred.map.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>mapred.reduce.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>oozie.launcher.mapred.child.java.opts</name> - <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value> - </property> - <property> - <name>SM3.DUMMYSID</name> - <value>FALSE</value> - </property> - </configuration> - <script>script/pig/sm3-segment-3908-251483-or_0_1.pig</script> - <param>REDUCERS=15</param> - <param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_0_1</param> - <param>INPUT1=/projects/sm3/root/segment/235/2/20120308_20120308</param> - <param>USERTYPE1=yuid</param> - <param>INPUT2=/projects/sm3/root/segment/236/2/20120308_20120308</param> - <param>USERTYPE2=yuid</param> - </pig> - <ok to="or_or_0_1_2"/> - <error to="kill"/> - </action> - <action name="or_or_0_1_2"> - <pig> - <job-tracker>${jobTracker}</job-tracker> - <name-node>${nameNode}</name-node> - <prepare> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_2"/> - </prepare> - <configuration> - <property> - <name>mapreduce.reduce.input.limit</name> - <value>-1</value> - </property> - <property> - <name>mapred.job.queue.name</name> - <value>${queueName}</value> - </property> - <property> - <name>mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>oozie.launcher.mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>mapred.map.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>mapred.reduce.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>oozie.launcher.mapred.child.java.opts</name> - <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value> - </property> - <property> - <name>SM3.DUMMYSID</name> - <value>FALSE</value> - </property> - </configuration> - <script>script/pig/sm3-segment-3908-251483-or_or_0_1_2.pig</script> - <param>REDUCERS=15</param> - <param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_2</param> - <param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_0_1</param> - <param>USERTYPE1=yuid</param> - <param>INPUT2=/projects/sm3/root/segment/237/2/20120308_20120308</param> - <param>USERTYPE2=yuid</param> - </pig> - <ok to="or_or_0_1_3"/> - <error to="kill"/> - </action> - <action name="or_or_0_1_3"> - <pig> - <job-tracker>${jobTracker}</job-tracker> - <name-node>${nameNode}</name-node> - <prepare> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_3"/> - </prepare> - <configuration> - <property> - <name>mapreduce.reduce.input.limit</name> - <value>-1</value> - </property> - <property> - <name>mapred.job.queue.name</name> - <value>${queueName}</value> - </property> - <property> - <name>mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>oozie.launcher.mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>mapred.map.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>mapred.reduce.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>oozie.launcher.mapred.child.java.opts</name> - <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value> - </property> - <property> - <name>SM3.DUMMYSID</name> - <value>FALSE</value> - </property> - </configuration> - <script>script/pig/sm3-segment-3908-251483-or_or_0_1_3.pig</script> - <param>REDUCERS=15</param> - <param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_3</param> - <param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_2</param> - <param>USERTYPE1=yuid</param> - <param>INPUT2=/projects/sm3/root/segment/238/2/20120308_20120308</param> - <param>USERTYPE2=yuid</param> - </pig> - <ok to="or_or_0_1_4"/> - <error to="kill"/> - </action> - <action name="or_or_0_1_4"> - <pig> - <job-tracker>${jobTracker}</job-tracker> - <name-node>${nameNode}</name-node> - <prepare> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_4"/> - </prepare> - <configuration> - <property> - <name>mapreduce.reduce.input.limit</name> - <value>-1</value> - </property> - <property> - <name>mapred.job.queue.name</name> - <value>${queueName}</value> - </property> - <property> - <name>mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>oozie.launcher.mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>mapred.map.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>mapred.reduce.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>oozie.launcher.mapred.child.java.opts</name> - <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value> - </property> - <property> - <name>SM3.DUMMYSID</name> - <value>FALSE</value> - </property> - </configuration> - <script>script/pig/sm3-segment-3908-251483-or_or_0_1_4.pig</script> - <param>REDUCERS=15</param> - <param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_4</param> - <param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_3</param> - <param>USERTYPE1=yuid</param> - <param>INPUT2=/projects/sm3/root/segment/239/2/20120308_20120308</param> - <param>USERTYPE2=yuid</param> - </pig> - <ok to="or_or_0_1_5"/> - <error to="kill"/> - </action> - <action name="or_or_0_1_5"> - <pig> - <job-tracker>${jobTracker}</job-tracker> - <name-node>${nameNode}</name-node> - <prepare> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_5"/> - </prepare> - <configuration> - <property> - <name>mapreduce.reduce.input.limit</name> - <value>-1</value> - </property> - <property> - <name>mapred.job.queue.name</name> - <value>${queueName}</value> - </property> - <property> - <name>mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>oozie.launcher.mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>mapred.map.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>mapred.reduce.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>oozie.launcher.mapred.child.java.opts</name> - <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value> - </property> - <property> - <name>SM3.DUMMYSID</name> - <value>FALSE</value> - </property> - </configuration> - <script>script/pig/sm3-segment-3908-251483-or_or_0_1_5.pig</script> - <param>REDUCERS=15</param> - <param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_5</param> - <param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_4</param> - <param>USERTYPE1=yuid</param> - <param>INPUT2=/projects/sm3/root/segment/240/2/20120308_20120308</param> - <param>USERTYPE2=yuid</param> - </pig> - <ok to="or_or_0_1_6_bad"/> - <error to="kill"/> - </action> - <action name="or_or_0_1_6"> - <pig> - <job-tracker>${jobTracker}</job-tracker> - <name-node>${nameNode}</name-node> - <prepare> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_6"/> - </prepare> - <configuration> - <property> - <name>mapreduce.reduce.input.limit</name> - <value>-1</value> - </property> - <property> - <name>mapred.job.queue.name</name> - <value>${queueName}</value> - </property> - <property> - <name>mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>oozie.launcher.mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>mapred.map.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>mapred.reduce.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>oozie.launcher.mapred.child.java.opts</name> - <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value> - </property> - <property> - <name>SM3.DUMMYSID</name> - <value>FALSE</value> - </property> - </configuration> - <script>script/pig/sm3-segment-3908-251483-or_or_0_1_6.pig</script> - <param>REDUCERS=15</param> - <param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_6</param> - <param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_5</param> - <param>USERTYPE1=yuid</param> - <param>INPUT2=/projects/sm3/root/segment/241/2/20120308_20120308</param> - <param>USERTYPE2=yuid</param> - </pig> - <ok to="or_or_0_1_7"/> - <error to="kill"/> - </action> - <action name="or_or_0_1_7"> - <pig> - <job-tracker>${jobTracker}</job-tracker> - <name-node>${nameNode}</name-node> - <prepare> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_7"/> - </prepare> - <configuration> - <property> - <name>mapreduce.reduce.input.limit</name> - <value>-1</value> - </property> - <property> - <name>mapred.job.queue.name</name> - <value>${queueName}</value> - </property> - <property> - <name>mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>oozie.launcher.mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>mapred.map.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>mapred.reduce.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>oozie.launcher.mapred.child.java.opts</name> - <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value> - </property> - <property> - <name>SM3.DUMMYSID</name> - <value>FALSE</value> - </property> - </configuration> - <script>script/pig/sm3-segment-3908-251483-or_or_0_1_7.pig</script> - <param>REDUCERS=15</param> - <param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_7</param> - <param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_6</param> - <param>USERTYPE1=yuid</param> - <param>INPUT2=/projects/sm3/root/segment/242/2/20120308_20120308</param> - <param>USERTYPE2=yuid</param> - </pig> - <ok to="or_or_0_1_8"/> - <error to="kill"/> - </action> - <action name="or_or_0_1_8"> - <pig> - <job-tracker>${jobTracker}</job-tracker> - <name-node>${nameNode}</name-node> - <prepare> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_8"/> - </prepare> - <configuration> - <property> - <name>mapreduce.reduce.input.limit</name> - <value>-1</value> - </property> - <property> - <name>mapred.job.queue.name</name> - <value>${queueName}</value> - </property> - <property> - <name>mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>oozie.launcher.mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>mapred.map.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>mapred.reduce.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>oozie.launcher.mapred.child.java.opts</name> - <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value> - </property> - <property> - <name>SM3.DUMMYSID</name> - <value>FALSE</value> - </property> - </configuration> - <script>script/pig/sm3-segment-3908-251483-or_or_0_1_8.pig</script> - <param>REDUCERS=15</param> - <param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_8</param> - <param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_7</param> - <param>USERTYPE1=yuid</param> - <param>INPUT2=/projects/sm3/root/segment/243/2/20120308_20120308</param> - <param>USERTYPE2=yuid</param> - </pig> - <ok to="or_or_0_1_9"/> - <error to="kill"/> - </action> - <action name="or_or_0_1_9"> - <pig> - <job-tracker>${jobTracker}</job-tracker> - <name-node>${nameNode}</name-node> - <prepare> - <delete path="${nameNode}/projects/sm3/root/segment/3908/8/20120308_20120308"/> - </prepare> - <configuration> - <property> - <name>mapreduce.reduce.input.limit</name> - <value>-1</value> - </property> - <property> - <name>mapred.job.queue.name</name> - <value>${queueName}</value> - </property> - <property> - <name>mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>oozie.launcher.mapreduce.job.acl-view-job</name> - <value>${SM_H20S_VIEWJOB}</value> - </property> - <property> - <name>mapred.map.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>mapred.reduce.tasks.speculative.execution</name> - <value>false</value> - </property> - <property> - <name>oozie.launcher.mapred.child.java.opts</name> - <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value> - </property> - <property> - <name>SM3.DUMMYSID</name> - <value>FALSE</value> - </property> - </configuration> - <script>script/pig/sm3-segment-3908-251483-or_or_0_1_9.pig</script> - <param>REDUCERS=15</param> - <param>OUTPUT=/projects/sm3/root/segment/3908/8/20120308_20120308</param> - <param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_8</param> - <param>USERTYPE1=yuid</param> - <param>INPUT2=/projects/sm3/root/segment/244/2/20120308_20120308</param> - <param>USERTYPE2=yuid</param> - </pig> - <ok to="cleanup"/> - <error to="kill"/> - </action> - <action name="cleanup"> - <fs> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_0_1"/> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_2"/> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_3"/> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_4"/> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_5"/> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_6"/> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_7"/> - <delete path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_8"/> - </fs> - <ok to="end"/> - <error to="kill"/> - </action> - <end name="end"/> -</workflow-app> http://git-wip-us.apache.org/repos/asf/oozie/blob/883c7556/docs/src/site/twiki/WebServicesAPI.twiki ---------------------------------------------------------------------- diff --git a/docs/src/site/twiki/WebServicesAPI.twiki b/docs/src/site/twiki/WebServicesAPI.twiki index ef3e602..dd3d290 100644 --- a/docs/src/site/twiki/WebServicesAPI.twiki +++ b/docs/src/site/twiki/WebServicesAPI.twiki @@ -1549,7 +1549,7 @@ Refer to the [[DG_CommandLineTool#Filtering_the_server_logs_with_logfilter_optio ---++++ Job graph -An =HTTP GET= request returns the image of the workflow DAG (rendered as a PNG image). +An =HTTP GET= request returns the image of the workflow DAG (rendered as a PNG or SVG image, or as a DOT string). * The nodes that are being executed are painted yellow * The nodes that have successfully executed are painted green * The nodes that have failed execution are painted red @@ -1558,21 +1558,52 @@ An =HTTP GET= request returns the image of the workflow DAG (rendered as a PNG i * An arc painted red marks the failure of the node and highlights the _error_ action * An arc painted gray marks a path not taken yet -*Request:* +*PNG request:* <verbatim> -GET /oozie/v1/job/job-3?show=graph[&show-kill=true] +GET /oozie/v1/job/job-3?show=graph[&show-kill=true][&format=png] </verbatim> -*Response:* +*PNG response:* <verbatim> HTTP/1.1 200 OK Content-Type: image/png Content-Length: {image_size_in_bytes} {image_bits} + +*SVG request:* +<verbatim> +GET /oozie/v1/job/job-3?show=graph[&show-kill=true]&format=svg </verbatim> -The optional =show-kill= parameter shows =kill= node in the graph. Valid values for this parameter are =1=, =yes=, and =true=. This parameter has no effect when workflow fails and the failure node leads to the =kill= node; in that case =kill= node is shown always. +*SVG response:* +<verbatim> +HTTP/1.1 200 OK +Content-Type: image/svg+xml +Content-Length: {image_size_in_bytes} + +{image_bits} + +*DOT request:* +<verbatim> +GET /oozie/v1/job/job-3?show=graph[&show-kill=true]&format=dot +</verbatim> + +*DOT response:* +<verbatim> +HTTP/1.1 200 OK +Content-Type: text/plain +Content-Length: {dot_size_in_bytes} + +{dot_bytes} +</verbatim> + +The optional =show-kill= parameter shows =kill= node in the graph. Valid values for this parameter are =1=, =yes=, and =true=. +This parameter has no effect when workflow fails and the failure node leads to the =kill= node; in that case =kill= node is shown +always. + +The optional =format= parameter describes whether the response has to be rendered as a PNG image, or an SVG image, or a DOT string. +When omitted, =format= is considered as =png= for backwards compatibility. Oozie Web UI uses the =svg= =format=. The node labels are the node names provided in the workflow XML. http://git-wip-us.apache.org/repos/asf/oozie/blob/883c7556/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 0b94484..be153c1 100644 --- a/pom.xml +++ b/pom.xml @@ -1499,40 +1499,9 @@ <!-- For drawing runtime DAG --> <dependency> - <groupId>net.sf.jung</groupId> - <artifactId>jung-graph-impl</artifactId> - <version>2.0.1</version> - </dependency> - - <dependency> - <groupId>net.sf.jung</groupId> - <artifactId>jung-api</artifactId> - <version>2.0.1</version> - </dependency> - - <dependency> - <groupId>net.sf.jung</groupId> - <artifactId>jung-visualization</artifactId> - <version>2.0.1</version> - </dependency> - - <dependency> - <groupId>net.sf.jung</groupId> - <artifactId>jung-algorithms</artifactId> - <version>2.0.1</version> - <exclusions> - <exclusion> - <!-- part of colt is LGPL --> - <groupId>colt</groupId> - <artifactId>colt</artifactId> - </exclusion> - </exclusions> - </dependency> - - <dependency> - <groupId>net.sourceforge.collections</groupId> - <artifactId>collections-generic</artifactId> - <version>4.01</version> + <groupId>guru.nidi</groupId> + <artifactId>graphviz-java</artifactId> + <version>0.2.2</version> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/oozie/blob/883c7556/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index 762f761..ce0b458 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 5.0.0 release (trunk - unreleased) +OOZIE-2406 Completely rewrite GraphGenerator code (andras.piros via gezapeti) OOZIE-3081 testSubmitWithLauncherQueue fails when FairScheduler is used (asasvari) OOZIE-3082 Move org.apache.oozie.action.hadoop.ActionStats to Oozie ShareLib (asasvari) OOZIE-3077 SLA documentation fixes (satishsaley) http://git-wip-us.apache.org/repos/asf/oozie/blob/883c7556/webapp/src/main/webapp/oozie-console.js ---------------------------------------------------------------------- diff --git a/webapp/src/main/webapp/oozie-console.js b/webapp/src/main/webapp/oozie-console.js index 72c8a19..a113b3e 100644 --- a/webapp/src/main/webapp/oozie-console.js +++ b/webapp/src/main/webapp/oozie-console.js @@ -1151,7 +1151,7 @@ function jobDetailsPopup(response, request) { if(!isLoadedDAG){ var dagImage= new Ext.ux.Image({ id: 'dagImage', - url: getOozieBase() + 'job/' + workflowId + '?show=graph', + url: getOozieBase() + 'job/' + workflowId + '?show=graph&format=svg&show-kill=true', autoScroll: true }); dagImage.setAlt('Runtime error : Can\'t display the graph. Number of actions are more than display limit 25');