You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by ma...@apache.org on 2011/05/18 03:40:38 UTC
svn commit: r1104654 - in /hadoop/mapreduce/branches/MR-279: ./
mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/
Author: mahadev
Date: Wed May 18 01:40:38 2011
New Revision: 1104654
URL: http://svn.apache.org/viewvc?rev=1104654&view=rev
Log:
MAPREDUCE-2509. Fix NPE in UI for pending attempts. (luke lu via mahadev)
Modified:
hadoop/mapreduce/branches/MR-279/CHANGES.txt
hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/JobBlock.java
hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TaskPage.java
hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksBlock.java
hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/Times.java
Modified: hadoop/mapreduce/branches/MR-279/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/CHANGES.txt?rev=1104654&r1=1104653&r2=1104654&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/CHANGES.txt (original)
+++ hadoop/mapreduce/branches/MR-279/CHANGES.txt Wed May 18 01:40:38 2011
@@ -4,6 +4,8 @@ Trunk (unreleased changes)
MAPREDUCE-279
+ MAPREDUCE-2509. Fix NPE in UI for pending attempts. (luke lu via mahadev)
+
Fix job hang if the AM launch fails. (mahadev)
MAPREDUCE-2504. race in JobHistoryEventHandler stop (siddharth seth via mahadev)
Modified: hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/JobBlock.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/JobBlock.java?rev=1104654&r1=1104653&r2=1104654&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/JobBlock.java (original)
+++ hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/JobBlock.java Wed May 18 01:40:38 2011
@@ -68,14 +68,16 @@ public class JobBlock extends HtmlBlock
int mapsComplete = job.getCompletedMaps();
int reduces = job.getTotalReduces();
int reducesComplete = job.getCompletedReduces();
+ long startTime = jobReport.getStartTime();
+ long finishTime = jobReport.getFinishTime();
countTasks(job);
info("Job Overview").
_("Job Name:", job.getName()).
_("State:", job.getState()).
_("Uberized:", job.isUber()).
- _("Started:", new Date(jobReport.getStartTime())).
- _("Elapsed:", StringUtils.formatTime(System.currentTimeMillis()
- - jobReport.getStartTime()));
+ _("Started:", new Date(startTime)).
+ _("Elapsed:", StringUtils.formatTime(
+ Times.elapsed(startTime, finishTime)));
html.
_(InfoBlock.class).
div(_INFO_WRAP).
Modified: hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TaskPage.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TaskPage.java?rev=1104654&r1=1104653&r2=1104654&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TaskPage.java (original)
+++ hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TaskPage.java Wed May 18 01:40:38 2011
@@ -21,16 +21,15 @@ package org.apache.hadoop.mapreduce.v2.a
import com.google.common.base.Joiner;
import com.google.inject.Inject;
-import org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptReport;
import org.apache.hadoop.mapreduce.v2.app.job.TaskAttempt;
import org.apache.hadoop.mapreduce.v2.util.MRApps;
+import org.apache.hadoop.util.StringUtils;
import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.util.ConverterUtils;
import org.apache.hadoop.yarn.webapp.SubView;
import org.apache.hadoop.yarn.webapp.hamlet.Hamlet;
import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.*;
import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
-
import static org.apache.hadoop.yarn.util.StringHelper.*;
import static org.apache.hadoop.yarn.webapp.view.JQueryUI.*;
@@ -69,23 +68,28 @@ public class TaskPage extends AppView {
String progress = percent(ta.getProgress());
ContainerId containerId = ta.getAssignedContainerID();
String nodeHttpAddr = ta.getNodeHttpAddress();
- TaskAttemptReport report = ta.getReport();
- long elapsed = Times.elapsed(report.getStartTime(), report.getFinishTime());
- String containerIdStr = ConverterUtils.toString(containerId);
- tbody.
+ long startTime = ta.getLaunchTime();
+ long finishTime = ta.getFinishTime();
+ long elapsed = Times.elapsed(startTime, finishTime);
+ TR<TBODY<TABLE<Hamlet>>> tr = tbody.
tr().
td(".id", taid).
td(".progress", progress).
- td(".state", ta.getState().toString()).
- td()
- .a(".logs",
- url("http://", nodeHttpAddr, "yarn", "containerlogs",
- containerIdStr),
- "Logs for " + containerIdStr)._().
- td(".ts", String.valueOf(report.getStartTime())).
- td(".ts", String.valueOf(report.getFinishTime())).
- td(".dt", String.valueOf(elapsed)).
- td(".note", Joiner.on('\n').join(ta.getDiagnostics()))._();
+ td(".state", ta.getState().toString());
+ if (containerId != null) {
+ String containerIdStr = ConverterUtils.toString(containerId);
+ tr.
+ td().
+ a(".logs", url("http://", nodeHttpAddr, "yarn", "containerlogs",
+ containerIdStr), "Logs for " + containerIdStr)._();
+ } else {
+ tr.td("N/A");
+ }
+ tr.
+ td(".ts", Times.format(startTime)).
+ td(".ts", Times.format(finishTime)).
+ td(".dt", StringUtils.formatTime(elapsed)).
+ td(".note", Joiner.on('\n').join(ta.getDiagnostics()))._();
}
tbody._()._();
}
Modified: hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksBlock.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksBlock.java?rev=1104654&r1=1104653&r2=1104654&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksBlock.java (original)
+++ hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksBlock.java Wed May 18 01:40:38 2011
@@ -19,8 +19,6 @@
package org.apache.hadoop.mapreduce.v2.app.webapp;
import com.google.inject.Inject;
-import java.text.SimpleDateFormat;
-import java.util.Date;
import org.apache.hadoop.mapreduce.v2.api.records.TaskReport;
import org.apache.hadoop.mapreduce.v2.api.records.TaskType;
@@ -31,15 +29,12 @@ import org.apache.hadoop.yarn.webapp.ham
import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.*;
import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
-
import static org.apache.hadoop.mapreduce.v2.app.webapp.AMWebApp.*;
import static org.apache.hadoop.yarn.util.StringHelper.*;
import static org.apache.hadoop.yarn.webapp.view.JQueryUI.*;
public class TasksBlock extends HtmlBlock {
final App app;
- final SimpleDateFormat dateFormat =
- new SimpleDateFormat("d-MMM-yyyy HH:mm:ss");
@Inject TasksBlock(App app) {
this.app = app;
@@ -74,7 +69,9 @@ public class TasksBlock extends HtmlBloc
String tid = MRApps.toString(task.getID());
TaskReport report = task.getReport();
String pct = percent(report.getProgress());
- long elapsed = Times.elapsed(report.getStartTime(), report.getFinishTime());
+ long startTime = report.getStartTime();
+ long finishTime = report.getFinishTime();
+ long elapsed = Times.elapsed(startTime, finishTime);
tbody.
tr().
td().
@@ -88,11 +85,11 @@ public class TasksBlock extends HtmlBloc
$style(join("width:", pct, '%'))._()._()._().
td(report.getTaskState().toString()).
td().
- br().$title(String.valueOf(report.getStartTime()))._().
- _(dateFormat.format(new Date(report.getStartTime())))._().
+ br().$title(String.valueOf(startTime))._().
+ _(Times.format(startTime))._().
td().
- br().$title(String.valueOf(report.getFinishTime()))._().
- _(dateFormat.format(new Date(report.getFinishTime())))._().
+ br().$title(String.valueOf(finishTime))._().
+ _(Times.format(finishTime))._().
td().
br().$title(String.valueOf(elapsed))._().
_(StringUtils.formatTime(elapsed))._()._();
Modified: hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/Times.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/Times.java?rev=1104654&r1=1104653&r2=1104654&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/Times.java (original)
+++ hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/Times.java Wed May 18 01:40:38 2011
@@ -18,12 +18,26 @@
package org.apache.hadoop.mapreduce.v2.app.webapp;
-final class Times {
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+class Times {
+ static final ThreadLocal<SimpleDateFormat> dateFormat =
+ new ThreadLocal<SimpleDateFormat>() {
+ @Override protected SimpleDateFormat initialValue() {
+ return new SimpleDateFormat("d-MMM-yyyy HH:mm:ss");
+ }
+ };
static long elapsed(long started, long finished) {
if (finished > 0) {
return finished - started;
}
- return System.currentTimeMillis() - started;
+ return started > 0 ? System.currentTimeMillis() - started : 0;
+ }
+
+ static String format(long ts) {
+ return ts > 0 ? String.valueOf(dateFormat.get().format(new Date(ts)))
+ : "N/A";
}
}