Repository: tez
Updated Branches:
  refs/heads/master 171d48504 -> 7a4ed2a6a


TEZ-2782. VertexInfo.getAvgExecutionTimeInterval throws NPE when task does not 
have any valid attempts info (rbalamohan, bikas)


Project: http://git-wip-us.apache.org/repos/asf/tez/repo
Commit: http://git-wip-us.apache.org/repos/asf/tez/commit/7a4ed2a6
Tree: http://git-wip-us.apache.org/repos/asf/tez/tree/7a4ed2a6
Diff: http://git-wip-us.apache.org/repos/asf/tez/diff/7a4ed2a6

Branch: refs/heads/master
Commit: 7a4ed2a6a6939713e0587b811d2ecc5ef8bf0c12
Parents: 171d485
Author: Rajesh Balamohan <[email protected]>
Authored: Tue Sep 8 08:48:27 2015 +0530
Committer: Rajesh Balamohan <[email protected]>
Committed: Tue Sep 8 08:48:27 2015 +0530

----------------------------------------------------------------------
 .../parser/datamodel/TaskAttemptInfo.java       |  7 +++++++
 .../history/parser/datamodel/VertexInfo.java    |  6 ++++--
 .../org/apache/tez/analyzer/utils/SVGUtils.java | 22 +++++++++++---------
 3 files changed, 23 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tez/blob/7a4ed2a6/tez-plugins/tez-history-parser/src/main/java/org/apache/tez/history/parser/datamodel/TaskAttemptInfo.java
----------------------------------------------------------------------
diff --git 
a/tez-plugins/tez-history-parser/src/main/java/org/apache/tez/history/parser/datamodel/TaskAttemptInfo.java
 
b/tez-plugins/tez-history-parser/src/main/java/org/apache/tez/history/parser/datamodel/TaskAttemptInfo.java
index ca008ce..acbefea 100644
--- 
a/tez-plugins/tez-history-parser/src/main/java/org/apache/tez/history/parser/datamodel/TaskAttemptInfo.java
+++ 
b/tez-plugins/tez-history-parser/src/main/java/org/apache/tez/history/parser/datamodel/TaskAttemptInfo.java
@@ -29,6 +29,7 @@ import org.apache.tez.common.ATSConstants;
 import org.apache.tez.common.counters.DAGCounter;
 import org.apache.tez.common.counters.TaskCounter;
 import org.apache.tez.common.counters.TezCounter;
+import org.apache.tez.dag.api.oldrecords.TaskAttemptState;
 import org.apache.tez.history.parser.utils.Utils;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
@@ -45,6 +46,8 @@ import static 
org.apache.hadoop.classification.InterfaceAudience.Public;
 @Evolving
 public class TaskAttemptInfo extends BaseInfo {
 
+  private static final String SUCCEEDED = 
StringInterner.weakIntern(TaskAttemptState.SUCCEEDED.name());
+
   private final String taskAttemptId;
   private final long startTime;
   private final long endTime;
@@ -148,6 +151,10 @@ public class TaskAttemptInfo extends BaseInfo {
     return endTime - 
(getTaskInfo().getVertexInfo().getDagInfo().getStartTime());
   }
   
+  public final boolean isSucceeded() {
+    return status.equals(SUCCEEDED);
+  }
+  
   public final List<DataDependencyEvent> getLastDataEvents() {
     return lastDataEvents;
   }

http://git-wip-us.apache.org/repos/asf/tez/blob/7a4ed2a6/tez-plugins/tez-history-parser/src/main/java/org/apache/tez/history/parser/datamodel/VertexInfo.java
----------------------------------------------------------------------
diff --git 
a/tez-plugins/tez-history-parser/src/main/java/org/apache/tez/history/parser/datamodel/VertexInfo.java
 
b/tez-plugins/tez-history-parser/src/main/java/org/apache/tez/history/parser/datamodel/VertexInfo.java
index 35da2d4..94547d4 100644
--- 
a/tez-plugins/tez-history-parser/src/main/java/org/apache/tez/history/parser/datamodel/VertexInfo.java
+++ 
b/tez-plugins/tez-history-parser/src/main/java/org/apache/tez/history/parser/datamodel/VertexInfo.java
@@ -201,8 +201,10 @@ public class VertexInfo extends BaseInfo {
       long totalAttempts = 0;
       for (TaskInfo task : getTasks()) {
         TaskAttemptInfo attempt = task.getSuccessfulTaskAttempt();
-        totalExecutionTime += attempt.getExecutionTimeInterval();
-        totalAttempts++;
+        if (attempt != null) {
+          totalExecutionTime += attempt.getExecutionTimeInterval();
+          totalAttempts++;
+        }
       }
       if (totalAttempts > 0) {
         avgExecutionTimeInterval = 
Math.round(totalExecutionTime*1.0/totalAttempts);

http://git-wip-us.apache.org/repos/asf/tez/blob/7a4ed2a6/tez-tools/analyzers/job-analyzer/src/main/java/org/apache/tez/analyzer/utils/SVGUtils.java
----------------------------------------------------------------------
diff --git 
a/tez-tools/analyzers/job-analyzer/src/main/java/org/apache/tez/analyzer/utils/SVGUtils.java
 
b/tez-tools/analyzers/job-analyzer/src/main/java/org/apache/tez/analyzer/utils/SVGUtils.java
index 44408d4..61b1676 100644
--- 
a/tez-tools/analyzers/job-analyzer/src/main/java/org/apache/tez/analyzer/utils/SVGUtils.java
+++ 
b/tez-tools/analyzers/job-analyzer/src/main/java/org/apache/tez/analyzer/utils/SVGUtils.java
@@ -104,8 +104,9 @@ public class SVGUtils {
     svgLines.add(rectStr);    
   }
   
-  private void addTextStr(int x, int y, String text, String anchor, int size, 
String title) {
-    String textStyle = "text-anchor: " + anchor + "; font-size: " + size + 
"px;";
+  private void addTextStr(int x, int y, String text, String anchor, int size, 
String title, boolean italic) {
+    String textStyle = "text-anchor: " + anchor + "; font-style: " + 
(italic?"italic":"normal") +
+        "; font-size: " + size + "px;";
     String textStr = "<text x=\"" + addOffsetX(scaleDown(x)) + "\" "
         + "y=\"" + addOffsetY(y) + "\" "
         + "style=\"" + textStyle + "\" transform=\"\">"
@@ -155,7 +156,7 @@ public class SVGUtils {
       addTextStr((stopTimeInterval + startTimeInterval) / 2,
           (yOffset * STEP_GAP + STEP_GAP / 2),
           text, "middle",
-          TEXT_SIZE, titleStr);
+          TEXT_SIZE, titleStr, false);
     } else {
       TaskAttemptInfo attempt = step.getAttempt();
       int startCriticalTimeInterval = (int) (step.getStartCriticalTime() - 
dagStartTime);
@@ -195,7 +196,8 @@ public class SVGUtils {
           STEP_GAP, RUNTIME_COLOR, BORDER_COLOR, RECT_OPACITY, titleStr);
 
       addTextStr((finishTimeInterval + creationTimeInterval) / 2,
-          (yOffset * STEP_GAP + STEP_GAP / 2),   attempt.getShortName(), 
"middle", TEXT_SIZE, titleStr);
+          (yOffset * STEP_GAP + STEP_GAP / 2),   attempt.getShortName(), 
"middle", TEXT_SIZE, 
+          titleStr, !attempt.isSucceeded());
     }
   }
 
@@ -212,12 +214,12 @@ public class SVGUtils {
     for (int i=0; i<11; ++i) {
       int x = Math.round(((dagFinishTimeInterval - 
dagStartTimeInterval)/10.0f)*i);
       addLineStr(x, 0, x, yGrid, BORDER_COLOR, "", TICK);  
-      addTextStr(x, 0, getTimeStr(x), "left", TEXT_SIZE, "");
+      addTextStr(x, 0, getTimeStr(x), "left", TEXT_SIZE, "", false);
     }
     addLineStr(dagStartTimeInterval, yGrid, dagFinishTimeInterval, yGrid, 
BORDER_COLOR, "", TICK);
     addTextStr((dagFinishTimeInterval + dagStartTimeInterval) / 2, yGrid + 
STEP_GAP,
         "Critical Path for " + dagInfo.getName() + " (" + dagInfo.getDagId() + 
")", "middle",
-        TEXT_SIZE, "");
+        TEXT_SIZE, "", false);
 
     // draw steps
     for (int i=1; i<=criticalPath.size(); ++i) {
@@ -255,16 +257,16 @@ public class SVGUtils {
     int legendWidth = dagFinishTimeInterval/5;
     
     addRectStr(legendX, legendWidth, legendY, STEP_GAP/2, 
VERTEX_INIT_COMMIT_COLOR, BORDER_COLOR, RECT_OPACITY, "");
-    addTextStr(legendX, legendY + STEP_GAP/3, "Vertex Init/Commit Overhead", 
"left", TEXT_SIZE, "");
+    addTextStr(legendX, legendY + STEP_GAP/3, "Vertex Init/Commit Overhead", 
"left", TEXT_SIZE, "", false);
     legendY += STEP_GAP/2;
     addRectStr(legendX, legendWidth, legendY, STEP_GAP/2, 
ALLOCATION_OVERHEAD_COLOR, BORDER_COLOR, RECT_OPACITY, "");
-    addTextStr(legendX, legendY + STEP_GAP/3, "Task Allocation Overhead", 
"left", TEXT_SIZE, "");
+    addTextStr(legendX, legendY + STEP_GAP/3, "Task Allocation Overhead", 
"left", TEXT_SIZE, "", false);
     legendY += STEP_GAP/2;
     addRectStr(legendX, legendWidth, legendY, STEP_GAP/2, 
LAUNCH_OVERHEAD_COLOR, BORDER_COLOR, RECT_OPACITY, "");
-    addTextStr(legendX, legendY + STEP_GAP/3, "Task Launch Overhead", "left", 
TEXT_SIZE, "");
+    addTextStr(legendX, legendY + STEP_GAP/3, "Task Launch Overhead", "left", 
TEXT_SIZE, "", false);
     legendY += STEP_GAP/2;
     addRectStr(legendX, legendWidth, legendY, STEP_GAP/2, RUNTIME_COLOR, 
BORDER_COLOR, RECT_OPACITY, "");
-    addTextStr(legendX, legendY + STEP_GAP/3, "Task Execution Time", "left", 
TEXT_SIZE, "");
+    addTextStr(legendX, legendY + STEP_GAP/3, "Task Execution Time", "left", 
TEXT_SIZE, "", false);
     
     Y_MAX += Y_BASE*2;
     X_MAX += X_BASE*2;

Reply via email to