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;
