YARN-7088. Add application launch time to Resource Manager REST API. (Kanwaljeet Sachdev via Haibo Chen)
This commit is contained in:
parent
427ad7ecc4
commit
0c14b6f0d8
|
@ -89,7 +89,7 @@ public class NotRunningJob implements MRClientProtocol {
|
||||||
// used for a non running job
|
// used for a non running job
|
||||||
return ApplicationReport.newInstance(unknownAppId, unknownAttemptId,
|
return ApplicationReport.newInstance(unknownAppId, unknownAttemptId,
|
||||||
"N/A", "N/A", "N/A", "N/A", 0, null, YarnApplicationState.NEW, "N/A",
|
"N/A", "N/A", "N/A", "N/A", 0, null, YarnApplicationState.NEW, "N/A",
|
||||||
"N/A", 0, 0, FinalApplicationStatus.UNDEFINED, null, "N/A", 0.0f,
|
"N/A", 0, 0, 0, FinalApplicationStatus.UNDEFINED, null, "N/A", 0.0f,
|
||||||
YarnConfiguration.DEFAULT_APPLICATION_TYPE, null);
|
YarnConfiguration.DEFAULT_APPLICATION_TYPE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -515,7 +515,7 @@ public class TestClientServiceDelegate {
|
||||||
appId, 0);
|
appId, 0);
|
||||||
return ApplicationReport.newInstance(appId, attemptId, "user", "queue",
|
return ApplicationReport.newInstance(appId, attemptId, "user", "queue",
|
||||||
"appname", "host", 124, null, YarnApplicationState.FINISHED,
|
"appname", "host", 124, null, YarnApplicationState.FINISHED,
|
||||||
"diagnostics", "url", 0, 0, FinalApplicationStatus.SUCCEEDED, null,
|
"diagnostics", "url", 0, 0, 0, FinalApplicationStatus.SUCCEEDED, null,
|
||||||
"N/A", 0.0f, YarnConfiguration.DEFAULT_APPLICATION_TYPE, null);
|
"N/A", 0.0f, YarnConfiguration.DEFAULT_APPLICATION_TYPE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -525,7 +525,7 @@ public class TestClientServiceDelegate {
|
||||||
appId, 0);
|
appId, 0);
|
||||||
return ApplicationReport.newInstance(appId, attemptId, "user", "queue",
|
return ApplicationReport.newInstance(appId, attemptId, "user", "queue",
|
||||||
"appname", host, port, null, YarnApplicationState.RUNNING, "diagnostics",
|
"appname", host, port, null, YarnApplicationState.RUNNING, "diagnostics",
|
||||||
"url", 0, 0, FinalApplicationStatus.UNDEFINED, null, "N/A", 0.0f,
|
"url", 0, 0, 0, FinalApplicationStatus.UNDEFINED, null, "N/A", 0.0f,
|
||||||
YarnConfiguration.DEFAULT_APPLICATION_TYPE, null);
|
YarnConfiguration.DEFAULT_APPLICATION_TYPE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -272,7 +272,8 @@ public class TestYARNRunner {
|
||||||
.thenReturn(
|
.thenReturn(
|
||||||
ApplicationReport.newInstance(appId, null, "tmp", "tmp", "tmp",
|
ApplicationReport.newInstance(appId, null, "tmp", "tmp", "tmp",
|
||||||
"tmp", 0, null, YarnApplicationState.FINISHED, "tmp", "tmp",
|
"tmp", 0, null, YarnApplicationState.FINISHED, "tmp", "tmp",
|
||||||
0l, 0l, FinalApplicationStatus.SUCCEEDED, null, null, 0f,
|
0L, 0L, 0L,
|
||||||
|
FinalApplicationStatus.SUCCEEDED, null, null, 0f,
|
||||||
"tmp", null));
|
"tmp", null));
|
||||||
yarnRunner.killJob(jobId);
|
yarnRunner.killJob(jobId);
|
||||||
verify(clientDelegate).killJob(jobId);
|
verify(clientDelegate).killJob(jobId);
|
||||||
|
|
|
@ -58,7 +58,8 @@ public abstract class ApplicationReport {
|
||||||
ApplicationAttemptId applicationAttemptId, String user, String queue,
|
ApplicationAttemptId applicationAttemptId, String user, String queue,
|
||||||
String name, String host, int rpcPort, Token clientToAMToken,
|
String name, String host, int rpcPort, Token clientToAMToken,
|
||||||
YarnApplicationState state, String diagnostics, String url,
|
YarnApplicationState state, String diagnostics, String url,
|
||||||
long startTime, long finishTime, FinalApplicationStatus finalStatus,
|
long startTime, long launchTime, long finishTime,
|
||||||
|
FinalApplicationStatus finalStatus,
|
||||||
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
||||||
float progress, String applicationType, Token amRmToken) {
|
float progress, String applicationType, Token amRmToken) {
|
||||||
ApplicationReport report = Records.newRecord(ApplicationReport.class);
|
ApplicationReport report = Records.newRecord(ApplicationReport.class);
|
||||||
|
@ -74,6 +75,7 @@ public abstract class ApplicationReport {
|
||||||
report.setDiagnostics(diagnostics);
|
report.setDiagnostics(diagnostics);
|
||||||
report.setTrackingUrl(url);
|
report.setTrackingUrl(url);
|
||||||
report.setStartTime(startTime);
|
report.setStartTime(startTime);
|
||||||
|
report.setLaunchTime(launchTime);
|
||||||
report.setFinishTime(finishTime);
|
report.setFinishTime(finishTime);
|
||||||
report.setFinalApplicationStatus(finalStatus);
|
report.setFinalApplicationStatus(finalStatus);
|
||||||
report.setApplicationResourceUsageReport(appResources);
|
report.setApplicationResourceUsageReport(appResources);
|
||||||
|
@ -84,13 +86,40 @@ public abstract class ApplicationReport {
|
||||||
return report;
|
return report;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
|
public static ApplicationReport newInstance(ApplicationId applicationId,
|
||||||
|
ApplicationAttemptId applicationAttemptId, String user, String queue,
|
||||||
|
String name, String host, int rpcPort, Token clientToAMToken,
|
||||||
|
YarnApplicationState state, String diagnostics, String url,
|
||||||
|
long startTime, long finishTime,
|
||||||
|
FinalApplicationStatus finalStatus,
|
||||||
|
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
||||||
|
float progress, String applicationType, Token amRmToken,
|
||||||
|
Set<String> tags, boolean unmanagedApplication, Priority priority,
|
||||||
|
String appNodeLabelExpression, String amNodeLabelExpression) {
|
||||||
|
ApplicationReport report =
|
||||||
|
newInstance(applicationId, applicationAttemptId, user, queue, name,
|
||||||
|
host, rpcPort, clientToAMToken, state, diagnostics, url,
|
||||||
|
startTime, 0, finishTime, finalStatus, appResources,
|
||||||
|
origTrackingUrl, progress, applicationType, amRmToken);
|
||||||
|
report.setApplicationTags(tags);
|
||||||
|
report.setUnmanagedApp(unmanagedApplication);
|
||||||
|
report.setPriority(priority);
|
||||||
|
report.setAppNodeLabelExpression(appNodeLabelExpression);
|
||||||
|
report.setAmNodeLabelExpression(amNodeLabelExpression);
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
|
||||||
@Private
|
@Private
|
||||||
@Unstable
|
@Unstable
|
||||||
public static ApplicationReport newInstance(ApplicationId applicationId,
|
public static ApplicationReport newInstance(ApplicationId applicationId,
|
||||||
ApplicationAttemptId applicationAttemptId, String user, String queue,
|
ApplicationAttemptId applicationAttemptId, String user, String queue,
|
||||||
String name, String host, int rpcPort, Token clientToAMToken,
|
String name, String host, int rpcPort, Token clientToAMToken,
|
||||||
YarnApplicationState state, String diagnostics, String url,
|
YarnApplicationState state, String diagnostics, String url,
|
||||||
long startTime, long finishTime, FinalApplicationStatus finalStatus,
|
long startTime, long launchTime, long finishTime,
|
||||||
|
FinalApplicationStatus finalStatus,
|
||||||
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
||||||
float progress, String applicationType, Token amRmToken, Set<String> tags,
|
float progress, String applicationType, Token amRmToken, Set<String> tags,
|
||||||
boolean unmanagedApplication, Priority priority,
|
boolean unmanagedApplication, Priority priority,
|
||||||
|
@ -98,8 +127,8 @@ public abstract class ApplicationReport {
|
||||||
ApplicationReport report =
|
ApplicationReport report =
|
||||||
newInstance(applicationId, applicationAttemptId, user, queue, name,
|
newInstance(applicationId, applicationAttemptId, user, queue, name,
|
||||||
host, rpcPort, clientToAMToken, state, diagnostics, url, startTime,
|
host, rpcPort, clientToAMToken, state, diagnostics, url, startTime,
|
||||||
finishTime, finalStatus, appResources, origTrackingUrl, progress,
|
launchTime, finishTime, finalStatus, appResources,
|
||||||
applicationType, amRmToken);
|
origTrackingUrl, progress, applicationType, amRmToken);
|
||||||
report.setApplicationTags(tags);
|
report.setApplicationTags(tags);
|
||||||
report.setUnmanagedApp(unmanagedApplication);
|
report.setUnmanagedApp(unmanagedApplication);
|
||||||
report.setPriority(priority);
|
report.setPriority(priority);
|
||||||
|
@ -282,6 +311,14 @@ public abstract class ApplicationReport {
|
||||||
@Unstable
|
@Unstable
|
||||||
public abstract void setStartTime(long startTime);
|
public abstract void setStartTime(long startTime);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
|
public abstract void setLaunchTime(long setLaunchTime);
|
||||||
|
|
||||||
|
@Public
|
||||||
|
@Unstable
|
||||||
|
public abstract long getLaunchTime();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the <em>finish time</em> of the application.
|
* Get the <em>finish time</em> of the application.
|
||||||
* @return <em>finish time</em> of the application
|
* @return <em>finish time</em> of the application
|
||||||
|
|
|
@ -281,6 +281,7 @@ message ApplicationReportProto {
|
||||||
optional string appNodeLabelExpression = 24;
|
optional string appNodeLabelExpression = 24;
|
||||||
optional string amNodeLabelExpression = 25;
|
optional string amNodeLabelExpression = 25;
|
||||||
repeated AppTimeoutsMapProto appTimeouts = 26;
|
repeated AppTimeoutsMapProto appTimeouts = 26;
|
||||||
|
optional int64 launchTime = 27;
|
||||||
}
|
}
|
||||||
|
|
||||||
message AppTimeoutsMapProto {
|
message AppTimeoutsMapProto {
|
||||||
|
|
|
@ -626,7 +626,7 @@ public abstract class ProtocolHATestBase extends ClientBaseWithFixes {
|
||||||
ApplicationReport.newInstance(appId, attemptId, "fakeUser",
|
ApplicationReport.newInstance(appId, attemptId, "fakeUser",
|
||||||
"fakeQueue", "fakeApplicationName", "localhost", 0, null,
|
"fakeQueue", "fakeApplicationName", "localhost", 0, null,
|
||||||
YarnApplicationState.FINISHED, "fake an application report", "",
|
YarnApplicationState.FINISHED, "fake an application report", "",
|
||||||
1000L, 1200L, FinalApplicationStatus.FAILED, null, "", 50f,
|
1000L, 1000L, 1200L, FinalApplicationStatus.FAILED, null, "", 50f,
|
||||||
"fakeApplicationType", null);
|
"fakeApplicationType", null);
|
||||||
return report;
|
return report;
|
||||||
}
|
}
|
||||||
|
|
|
@ -332,7 +332,7 @@ public class TestAHSClient {
|
||||||
ApplicationReport.newInstance(applicationId,
|
ApplicationReport.newInstance(applicationId,
|
||||||
ApplicationAttemptId.newInstance(applicationId, 1), "user",
|
ApplicationAttemptId.newInstance(applicationId, 1), "user",
|
||||||
"queue", "appname", "host", 124, null,
|
"queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN",
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN",
|
||||||
null);
|
null);
|
||||||
List<ApplicationReport> applicationReports =
|
List<ApplicationReport> applicationReports =
|
||||||
|
@ -389,7 +389,7 @@ public class TestAHSClient {
|
||||||
ApplicationReport.newInstance(applicationId2,
|
ApplicationReport.newInstance(applicationId2,
|
||||||
ApplicationAttemptId.newInstance(applicationId2, 2), "user2",
|
ApplicationAttemptId.newInstance(applicationId2, 2), "user2",
|
||||||
"queue2", "appname2", "host2", 125, null,
|
"queue2", "appname2", "host2", 125, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics2", "url2", 2, 2,
|
YarnApplicationState.FINISHED, "diagnostics2", "url2", 2, 2, 2,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.63789f,
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.63789f,
|
||||||
"NON-YARN", null);
|
"NON-YARN", null);
|
||||||
applicationReports.add(newApplicationReport2);
|
applicationReports.add(newApplicationReport2);
|
||||||
|
@ -399,7 +399,7 @@ public class TestAHSClient {
|
||||||
ApplicationReport.newInstance(applicationId3,
|
ApplicationReport.newInstance(applicationId3,
|
||||||
ApplicationAttemptId.newInstance(applicationId3, 3), "user3",
|
ApplicationAttemptId.newInstance(applicationId3, 3), "user3",
|
||||||
"queue3", "appname3", "host3", 126, null,
|
"queue3", "appname3", "host3", 126, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics3", "url3", 3, 3,
|
YarnApplicationState.RUNNING, "diagnostics3", "url3", 3, 3, 3,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.73789f,
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.73789f,
|
||||||
"MAPREDUCE", null);
|
"MAPREDUCE", null);
|
||||||
applicationReports.add(newApplicationReport3);
|
applicationReports.add(newApplicationReport3);
|
||||||
|
@ -409,7 +409,7 @@ public class TestAHSClient {
|
||||||
ApplicationReport.newInstance(applicationId4,
|
ApplicationReport.newInstance(applicationId4,
|
||||||
ApplicationAttemptId.newInstance(applicationId4, 4), "user4",
|
ApplicationAttemptId.newInstance(applicationId4, 4), "user4",
|
||||||
"queue4", "appname4", "host4", 127, null,
|
"queue4", "appname4", "host4", 127, null,
|
||||||
YarnApplicationState.FAILED, "diagnostics4", "url4", 4, 4,
|
YarnApplicationState.FAILED, "diagnostics4", "url4", 4, 4, 4,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.83789f,
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.83789f,
|
||||||
"NON-MAPREDUCE", null);
|
"NON-MAPREDUCE", null);
|
||||||
applicationReports.add(newApplicationReport4);
|
applicationReports.add(newApplicationReport4);
|
||||||
|
|
|
@ -737,7 +737,7 @@ public class TestYarnClient extends ParameterizedSchedulerTestBase {
|
||||||
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
List<ApplicationReport> applicationReports = new ArrayList<ApplicationReport>();
|
List<ApplicationReport> applicationReports = new ArrayList<ApplicationReport>();
|
||||||
applicationReports.add(newApplicationReport);
|
applicationReports.add(newApplicationReport);
|
||||||
|
@ -812,7 +812,7 @@ public class TestYarnClient extends ParameterizedSchedulerTestBase {
|
||||||
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
||||||
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 2),
|
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 2),
|
||||||
"user2", "queue2", "appname2", "host2", 125, null,
|
"user2", "queue2", "appname2", "host2", 125, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics2", "url2", 2, 2,
|
YarnApplicationState.FINISHED, "diagnostics2", "url2", 2, 2, 2,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.63789f, "NON-YARN",
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.63789f, "NON-YARN",
|
||||||
null);
|
null);
|
||||||
applicationReports.add(newApplicationReport2);
|
applicationReports.add(newApplicationReport2);
|
||||||
|
@ -821,7 +821,7 @@ public class TestYarnClient extends ParameterizedSchedulerTestBase {
|
||||||
ApplicationReport newApplicationReport3 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport3 = ApplicationReport.newInstance(
|
||||||
applicationId3, ApplicationAttemptId.newInstance(applicationId3, 3),
|
applicationId3, ApplicationAttemptId.newInstance(applicationId3, 3),
|
||||||
"user3", "queue3", "appname3", "host3", 126, null,
|
"user3", "queue3", "appname3", "host3", 126, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics3", "url3", 3, 3,
|
YarnApplicationState.RUNNING, "diagnostics3", "url3", 3, 3, 3,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.73789f, "MAPREDUCE",
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.73789f, "MAPREDUCE",
|
||||||
null);
|
null);
|
||||||
applicationReports.add(newApplicationReport3);
|
applicationReports.add(newApplicationReport3);
|
||||||
|
@ -832,7 +832,7 @@ public class TestYarnClient extends ParameterizedSchedulerTestBase {
|
||||||
applicationId4,
|
applicationId4,
|
||||||
ApplicationAttemptId.newInstance(applicationId4, 4),
|
ApplicationAttemptId.newInstance(applicationId4, 4),
|
||||||
"user4", "queue4", "appname4", "host4", 127, null,
|
"user4", "queue4", "appname4", "host4", 127, null,
|
||||||
YarnApplicationState.FAILED, "diagnostics4", "url4", 4, 4,
|
YarnApplicationState.FAILED, "diagnostics4", "url4", 4, 4, 4,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.83789f,
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.83789f,
|
||||||
"NON-MAPREDUCE", null);
|
"NON-MAPREDUCE", null);
|
||||||
applicationReports.add(newApplicationReport4);
|
applicationReports.add(newApplicationReport4);
|
||||||
|
|
|
@ -136,7 +136,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, usageReport, "N/A", 0.53789f, "YARN",
|
FinalApplicationStatus.SUCCEEDED, usageReport, "N/A", 0.53789f, "YARN",
|
||||||
null, null, false, Priority.newInstance(0), "high-mem", "high-mem");
|
null, null, false, Priority.newInstance(0), "high-mem", "high-mem");
|
||||||
newApplicationReport.setLogAggregationStatus(LogAggregationStatus.SUCCEEDED);
|
newApplicationReport.setLogAggregationStatus(LogAggregationStatus.SUCCEEDED);
|
||||||
|
@ -383,7 +383,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null,
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null,
|
||||||
Sets.newHashSet("tag1", "tag3"), false, Priority.UNDEFINED, "", "");
|
Sets.newHashSet("tag1", "tag3"), false, Priority.UNDEFINED, "", "");
|
||||||
List<ApplicationReport> applicationReports =
|
List<ApplicationReport> applicationReports =
|
||||||
|
@ -394,7 +394,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
||||||
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 2),
|
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 2),
|
||||||
"user2", "queue2", "appname2", "host2", 125, null,
|
"user2", "queue2", "appname2", "host2", 125, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics2", "url2", 2, 2,
|
YarnApplicationState.FINISHED, "diagnostics2", "url2", 2, 2, 2,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.63789f, "NON-YARN",
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.63789f, "NON-YARN",
|
||||||
null, Sets.newHashSet("tag2", "tag3"), false, Priority.UNDEFINED,
|
null, Sets.newHashSet("tag2", "tag3"), false, Priority.UNDEFINED,
|
||||||
"", "");
|
"", "");
|
||||||
|
@ -404,7 +404,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport3 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport3 = ApplicationReport.newInstance(
|
||||||
applicationId3, ApplicationAttemptId.newInstance(applicationId3, 3),
|
applicationId3, ApplicationAttemptId.newInstance(applicationId3, 3),
|
||||||
"user3", "queue3", "appname3", "host3", 126, null,
|
"user3", "queue3", "appname3", "host3", 126, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics3", "url3", 3, 3,
|
YarnApplicationState.RUNNING, "diagnostics3", "url3", 3, 3, 3,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.73789f, "MAPREDUCE",
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.73789f, "MAPREDUCE",
|
||||||
null, Sets.newHashSet("tag1", "tag4"), false, Priority.UNDEFINED,
|
null, Sets.newHashSet("tag1", "tag4"), false, Priority.UNDEFINED,
|
||||||
"", "");
|
"", "");
|
||||||
|
@ -414,7 +414,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport4 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport4 = ApplicationReport.newInstance(
|
||||||
applicationId4, ApplicationAttemptId.newInstance(applicationId4, 4),
|
applicationId4, ApplicationAttemptId.newInstance(applicationId4, 4),
|
||||||
"user4", "queue4", "appname4", "host4", 127, null,
|
"user4", "queue4", "appname4", "host4", 127, null,
|
||||||
YarnApplicationState.FAILED, "diagnostics4", "url4", 4, 4,
|
YarnApplicationState.FAILED, "diagnostics4", "url4", 4, 4, 4,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.83789f,
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.83789f,
|
||||||
"NON-MAPREDUCE", null, Sets.newHashSet("tag1"), false,
|
"NON-MAPREDUCE", null, Sets.newHashSet("tag1"), false,
|
||||||
Priority.UNDEFINED, "", "");
|
Priority.UNDEFINED, "", "");
|
||||||
|
@ -424,7 +424,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport5 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport5 = ApplicationReport.newInstance(
|
||||||
applicationId5, ApplicationAttemptId.newInstance(applicationId5, 5),
|
applicationId5, ApplicationAttemptId.newInstance(applicationId5, 5),
|
||||||
"user5", "queue5", "appname5", "host5", 128, null,
|
"user5", "queue5", "appname5", "host5", 128, null,
|
||||||
YarnApplicationState.ACCEPTED, "diagnostics5", "url5", 5, 5,
|
YarnApplicationState.ACCEPTED, "diagnostics5", "url5", 5, 5, 5,
|
||||||
FinalApplicationStatus.KILLED, null, "N/A", 0.93789f, "HIVE", null,
|
FinalApplicationStatus.KILLED, null, "N/A", 0.93789f, "HIVE", null,
|
||||||
Sets.newHashSet("tag2", "tag4"), false, Priority.UNDEFINED, "", "");
|
Sets.newHashSet("tag2", "tag4"), false, Priority.UNDEFINED, "", "");
|
||||||
applicationReports.add(newApplicationReport5);
|
applicationReports.add(newApplicationReport5);
|
||||||
|
@ -433,7 +433,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport6 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport6 = ApplicationReport.newInstance(
|
||||||
applicationId6, ApplicationAttemptId.newInstance(applicationId6, 6),
|
applicationId6, ApplicationAttemptId.newInstance(applicationId6, 6),
|
||||||
"user6", "queue6", "appname6", "host6", 129, null,
|
"user6", "queue6", "appname6", "host6", 129, null,
|
||||||
YarnApplicationState.SUBMITTED, "diagnostics6", "url6", 6, 6,
|
YarnApplicationState.SUBMITTED, "diagnostics6", "url6", 6, 6, 6,
|
||||||
FinalApplicationStatus.KILLED, null, "N/A", 0.99789f, "PIG",
|
FinalApplicationStatus.KILLED, null, "N/A", 0.99789f, "PIG",
|
||||||
null, new HashSet<String>(), false, Priority.UNDEFINED, "", "");
|
null, new HashSet<String>(), false, Priority.UNDEFINED, "", "");
|
||||||
applicationReports.add(newApplicationReport6);
|
applicationReports.add(newApplicationReport6);
|
||||||
|
@ -1007,7 +1007,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
||||||
newApplicationReport2);
|
newApplicationReport2);
|
||||||
|
@ -1020,7 +1020,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
||||||
newApplicationReport);
|
newApplicationReport);
|
||||||
|
@ -1059,12 +1059,12 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport1 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport1 = ApplicationReport.newInstance(
|
||||||
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
||||||
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 1),
|
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.34344f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.34344f, "YARN", null);
|
||||||
when(client.getApplicationReport(applicationId1)).thenReturn(
|
when(client.getApplicationReport(applicationId1)).thenReturn(
|
||||||
newApplicationReport1);
|
newApplicationReport1);
|
||||||
|
@ -1084,12 +1084,12 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport3 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport3 = ApplicationReport.newInstance(
|
||||||
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
ApplicationReport newApplicationReport4 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport4 = ApplicationReport.newInstance(
|
||||||
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 1),
|
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53345f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53345f, "YARN", null);
|
||||||
when(client.getApplicationReport(applicationId1)).thenReturn(
|
when(client.getApplicationReport(applicationId1)).thenReturn(
|
||||||
newApplicationReport3);
|
newApplicationReport3);
|
||||||
|
@ -1127,7 +1127,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport5 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport5 = ApplicationReport.newInstance(
|
||||||
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53345f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53345f, "YARN", null);
|
||||||
when(client.getApplicationReport(applicationId1)).thenReturn(
|
when(client.getApplicationReport(applicationId1)).thenReturn(
|
||||||
newApplicationReport5);
|
newApplicationReport5);
|
||||||
|
@ -1154,12 +1154,12 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport5 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport5 = ApplicationReport.newInstance(
|
||||||
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
applicationId1, ApplicationAttemptId.newInstance(applicationId1, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
ApplicationReport newApplicationReport6 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport6 = ApplicationReport.newInstance(
|
||||||
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 1),
|
applicationId2, ApplicationAttemptId.newInstance(applicationId2, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53345f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53345f, "YARN", null);
|
||||||
when(client.getApplicationReport(applicationId1)).thenReturn(
|
when(client.getApplicationReport(applicationId1)).thenReturn(
|
||||||
newApplicationReport5);
|
newApplicationReport5);
|
||||||
|
@ -1182,7 +1182,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
||||||
newApplicationReport2);
|
newApplicationReport2);
|
||||||
|
@ -1197,7 +1197,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
||||||
newApplicationReport);
|
newApplicationReport);
|
||||||
|
@ -1232,7 +1232,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class)))
|
when(client.getApplicationReport(any(ApplicationId.class)))
|
||||||
.thenReturn(newApplicationReport2);
|
.thenReturn(newApplicationReport2);
|
||||||
|
@ -1247,7 +1247,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
||||||
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
||||||
"user", "queue", "appname", "host", 124, null,
|
"user", "queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class)))
|
when(client.getApplicationReport(any(ApplicationId.class)))
|
||||||
.thenReturn(newApplicationReport);
|
.thenReturn(newApplicationReport);
|
||||||
|
@ -2015,7 +2015,7 @@ public class TestYarnCLI {
|
||||||
ApplicationReport.newInstance(applicationId,
|
ApplicationReport.newInstance(applicationId,
|
||||||
ApplicationAttemptId.newInstance(applicationId, 1), "user",
|
ApplicationAttemptId.newInstance(applicationId, 1), "user",
|
||||||
"queue", "appname", "host", 124, null,
|
"queue", "appname", "host", 124, null,
|
||||||
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0, 0,
|
||||||
FinalApplicationStatus.UNDEFINED, null, "N/A", 0.53789f, "YARN",
|
FinalApplicationStatus.UNDEFINED, null, "N/A", 0.53789f, "YARN",
|
||||||
null);
|
null);
|
||||||
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
when(client.getApplicationReport(any(ApplicationId.class))).thenReturn(
|
||||||
|
|
|
@ -220,6 +220,17 @@ public class ApplicationReportPBImpl extends ApplicationReport {
|
||||||
return p.getStartTime();
|
return p.getStartTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getLaunchTime() {
|
||||||
|
ApplicationReportProtoOrBuilder p = viaProto ? proto : builder;
|
||||||
|
return p.getLaunchTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLaunchTime(long launchTime) {
|
||||||
|
maybeInitBuilder();
|
||||||
|
builder.setLaunchTime(launchTime);
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public long getFinishTime() {
|
public long getFinishTime() {
|
||||||
ApplicationReportProtoOrBuilder p = viaProto ? proto : builder;
|
ApplicationReportProtoOrBuilder p = viaProto ? proto : builder;
|
||||||
|
|
|
@ -58,7 +58,7 @@ public class TestApplicatonReport {
|
||||||
ApplicationReport appReport =
|
ApplicationReport appReport =
|
||||||
ApplicationReport.newInstance(appId, appAttemptId, "user", "queue",
|
ApplicationReport.newInstance(appId, appAttemptId, "user", "queue",
|
||||||
"appname", "host", 124, null, YarnApplicationState.FINISHED,
|
"appname", "host", 124, null, YarnApplicationState.FINISHED,
|
||||||
"diagnostics", "url", 0, 0, FinalApplicationStatus.SUCCEEDED, null,
|
"diagnostics", "url", 0, 0, 0, FinalApplicationStatus.SUCCEEDED, null,
|
||||||
"N/A", 0.53789f, YarnConfiguration.DEFAULT_APPLICATION_TYPE, null,
|
"N/A", 0.53789f, YarnConfiguration.DEFAULT_APPLICATION_TYPE, null,
|
||||||
null, false, Priority.newInstance(0),"","");
|
null, false, Priority.newInstance(0),"","");
|
||||||
return appReport;
|
return appReport;
|
||||||
|
|
|
@ -137,7 +137,7 @@ public class ApplicationHistoryManagerImpl extends AbstractService implements
|
||||||
currentApplicationAttemptId, appHistory.getUser(), appHistory.getQueue(),
|
currentApplicationAttemptId, appHistory.getUser(), appHistory.getQueue(),
|
||||||
appHistory.getApplicationName(), host, rpcPort, null,
|
appHistory.getApplicationName(), host, rpcPort, null,
|
||||||
appHistory.getYarnApplicationState(), appHistory.getDiagnosticsInfo(),
|
appHistory.getYarnApplicationState(), appHistory.getDiagnosticsInfo(),
|
||||||
trackingUrl, appHistory.getStartTime(), appHistory.getFinishTime(),
|
trackingUrl, appHistory.getStartTime(), 0, appHistory.getFinishTime(),
|
||||||
appHistory.getFinalApplicationStatus(), null, "", 100,
|
appHistory.getFinalApplicationStatus(), null, "", 100,
|
||||||
appHistory.getApplicationType(), null);
|
appHistory.getApplicationType(), null);
|
||||||
}
|
}
|
||||||
|
|
|
@ -391,7 +391,7 @@ public class BuilderUtils {
|
||||||
ApplicationId applicationId, ApplicationAttemptId applicationAttemptId,
|
ApplicationId applicationId, ApplicationAttemptId applicationAttemptId,
|
||||||
String user, String queue, String name, String host, int rpcPort,
|
String user, String queue, String name, String host, int rpcPort,
|
||||||
Token clientToAMToken, YarnApplicationState state, String diagnostics,
|
Token clientToAMToken, YarnApplicationState state, String diagnostics,
|
||||||
String url, long startTime, long finishTime,
|
String url, long startTime, long launchTime, long finishTime,
|
||||||
FinalApplicationStatus finalStatus,
|
FinalApplicationStatus finalStatus,
|
||||||
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
ApplicationResourceUsageReport appResources, String origTrackingUrl,
|
||||||
float progress, String appType, Token amRmToken, Set<String> tags,
|
float progress, String appType, Token amRmToken, Set<String> tags,
|
||||||
|
@ -410,6 +410,7 @@ public class BuilderUtils {
|
||||||
report.setDiagnostics(diagnostics);
|
report.setDiagnostics(diagnostics);
|
||||||
report.setTrackingUrl(url);
|
report.setTrackingUrl(url);
|
||||||
report.setStartTime(startTime);
|
report.setStartTime(startTime);
|
||||||
|
report.setLaunchTime(launchTime);
|
||||||
report.setFinishTime(finishTime);
|
report.setFinishTime(finishTime);
|
||||||
report.setFinalApplicationStatus(finalStatus);
|
report.setFinalApplicationStatus(finalStatus);
|
||||||
report.setApplicationResourceUsageReport(appResources);
|
report.setApplicationResourceUsageReport(appResources);
|
||||||
|
|
|
@ -242,10 +242,9 @@ public class AppBlock extends HtmlBlock {
|
||||||
.__("FinalStatus Reported by AM:",
|
.__("FinalStatus Reported by AM:",
|
||||||
clairfyAppFinalStatus(app.getFinalAppStatus()))
|
clairfyAppFinalStatus(app.getFinalAppStatus()))
|
||||||
.__("Started:", Times.format(app.getStartedTime()))
|
.__("Started:", Times.format(app.getStartedTime()))
|
||||||
.__(
|
.__("Launched:", Times.format(app.getLaunchTime()))
|
||||||
"Elapsed:",
|
.__("Finished:", Times.format(app.getFinishedTime()))
|
||||||
StringUtils.formatTime(Times.elapsed(app.getStartedTime(),
|
.__("Elapsed:", StringUtils.formatTime(app.getElapsedTime()))
|
||||||
app.getFinishedTime())))
|
|
||||||
.__(
|
.__(
|
||||||
"Tracking URL:",
|
"Tracking URL:",
|
||||||
app.getTrackingUrl() == null
|
app.getTrackingUrl() == null
|
||||||
|
|
|
@ -150,7 +150,9 @@ public class AppsBlock extends HtmlBlock {
|
||||||
html.table("#apps").thead().tr().th(".id", "ID").th(".user", "User")
|
html.table("#apps").thead().tr().th(".id", "ID").th(".user", "User")
|
||||||
.th(".name", "Name").th(".type", "Application Type")
|
.th(".name", "Name").th(".type", "Application Type")
|
||||||
.th(".queue", "Queue").th(".priority", "Application Priority")
|
.th(".queue", "Queue").th(".priority", "Application Priority")
|
||||||
.th(".starttime", "StartTime").th(".finishtime", "FinishTime")
|
.th(".starttime", "StartTime")
|
||||||
|
.th(".launchtime", "LaunchTime")
|
||||||
|
.th(".finishtime", "FinishTime")
|
||||||
.th(".state", "State").th(".finalstatus", "FinalStatus")
|
.th(".state", "State").th(".finalstatus", "FinalStatus")
|
||||||
.th(".progress", "Progress").th(".ui", "Tracking UI").__().__().tbody();
|
.th(".progress", "Progress").th(".ui", "Tracking UI").__().__().tbody();
|
||||||
|
|
||||||
|
@ -188,6 +190,7 @@ public class AppsBlock extends HtmlBlock {
|
||||||
.getQueue()))).append("\",\"").append(String
|
.getQueue()))).append("\",\"").append(String
|
||||||
.valueOf(app.getPriority()))
|
.valueOf(app.getPriority()))
|
||||||
.append("\",\"").append(app.getStartedTime())
|
.append("\",\"").append(app.getStartedTime())
|
||||||
|
.append("\",\"").append(app.getLaunchTime())
|
||||||
.append("\",\"").append(app.getFinishedTime())
|
.append("\",\"").append(app.getFinishedTime())
|
||||||
.append("\",\"")
|
.append("\",\"")
|
||||||
.append(app.getAppState() == null ? UNAVAILABLE : app.getAppState())
|
.append(app.getAppState() == null ? UNAVAILABLE : app.getAppState())
|
||||||
|
|
|
@ -51,7 +51,7 @@ public class WebPageUtils {
|
||||||
sb.append("[\n")
|
sb.append("[\n")
|
||||||
.append("{'sType':'natural', 'aTargets': [0]")
|
.append("{'sType':'natural', 'aTargets': [0]")
|
||||||
.append(", 'mRender': parseHadoopID }")
|
.append(", 'mRender': parseHadoopID }")
|
||||||
.append("\n, {'sType':'numeric', 'aTargets': [6, 7]")
|
.append("\n, {'sType':'numeric', 'aTargets': [6, 7, 8]")
|
||||||
.append(", 'mRender': renderHadoopDate }")
|
.append(", 'mRender': renderHadoopDate }")
|
||||||
.append("\n, {'sType':'numeric', bSearchable:false, 'aTargets':");
|
.append("\n, {'sType':'numeric', bSearchable:false, 'aTargets':");
|
||||||
if (isFairSchedulerPage) {
|
if (isFairSchedulerPage) {
|
||||||
|
|
|
@ -55,6 +55,7 @@ public class AppInfo {
|
||||||
protected FinalApplicationStatus finalAppStatus;
|
protected FinalApplicationStatus finalAppStatus;
|
||||||
protected long submittedTime;
|
protected long submittedTime;
|
||||||
protected long startedTime;
|
protected long startedTime;
|
||||||
|
private long launchTime;
|
||||||
protected long finishedTime;
|
protected long finishedTime;
|
||||||
protected long elapsedTime;
|
protected long elapsedTime;
|
||||||
protected String applicationTags;
|
protected String applicationTags;
|
||||||
|
@ -88,6 +89,7 @@ public class AppInfo {
|
||||||
originalTrackingUrl = app.getOriginalTrackingUrl();
|
originalTrackingUrl = app.getOriginalTrackingUrl();
|
||||||
submittedTime = app.getStartTime();
|
submittedTime = app.getStartTime();
|
||||||
startedTime = app.getStartTime();
|
startedTime = app.getStartTime();
|
||||||
|
launchTime = app.getLaunchTime();
|
||||||
finishedTime = app.getFinishTime();
|
finishedTime = app.getFinishTime();
|
||||||
elapsedTime = Times.elapsed(startedTime, finishedTime);
|
elapsedTime = Times.elapsed(startedTime, finishedTime);
|
||||||
finalAppStatus = app.getFinalApplicationStatus();
|
finalAppStatus = app.getFinalApplicationStatus();
|
||||||
|
@ -198,6 +200,10 @@ public class AppInfo {
|
||||||
return submittedTime;
|
return submittedTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getLaunchTime() {
|
||||||
|
return launchTime;
|
||||||
|
}
|
||||||
|
|
||||||
public long getStartedTime() {
|
public long getStartedTime() {
|
||||||
return startedTime;
|
return startedTime;
|
||||||
}
|
}
|
||||||
|
|
|
@ -303,7 +303,7 @@ public class AMLauncher implements Runnable {
|
||||||
LOG.info("Launching master" + application.getAppAttemptId());
|
LOG.info("Launching master" + application.getAppAttemptId());
|
||||||
launch();
|
launch();
|
||||||
handler.handle(new RMAppAttemptEvent(application.getAppAttemptId(),
|
handler.handle(new RMAppAttemptEvent(application.getAppAttemptId(),
|
||||||
RMAppAttemptEventType.LAUNCHED));
|
RMAppAttemptEventType.LAUNCHED, System.currentTimeMillis()));
|
||||||
} catch(Exception ie) {
|
} catch(Exception ie) {
|
||||||
String message = "Error launching " + application.getAppAttemptId()
|
String message = "Error launching " + application.getAppAttemptId()
|
||||||
+ ". Got exception: " + StringUtils.stringifyException(ie);
|
+ ". Got exception: " + StringUtils.stringifyException(ie);
|
||||||
|
|
|
@ -47,7 +47,8 @@ public abstract class ApplicationStateData {
|
||||||
public static ApplicationStateData newInstance(long submitTime,
|
public static ApplicationStateData newInstance(long submitTime,
|
||||||
long startTime, String user,
|
long startTime, String user,
|
||||||
ApplicationSubmissionContext submissionContext, RMAppState state,
|
ApplicationSubmissionContext submissionContext, RMAppState state,
|
||||||
String diagnostics, long finishTime, CallerContext callerContext) {
|
String diagnostics, long launchTime, long finishTime,
|
||||||
|
CallerContext callerContext) {
|
||||||
ApplicationStateData appState = Records.newRecord(ApplicationStateData.class);
|
ApplicationStateData appState = Records.newRecord(ApplicationStateData.class);
|
||||||
appState.setSubmitTime(submitTime);
|
appState.setSubmitTime(submitTime);
|
||||||
appState.setStartTime(startTime);
|
appState.setStartTime(startTime);
|
||||||
|
@ -55,6 +56,7 @@ public abstract class ApplicationStateData {
|
||||||
appState.setApplicationSubmissionContext(submissionContext);
|
appState.setApplicationSubmissionContext(submissionContext);
|
||||||
appState.setState(state);
|
appState.setState(state);
|
||||||
appState.setDiagnostics(diagnostics);
|
appState.setDiagnostics(diagnostics);
|
||||||
|
appState.setLaunchTime(launchTime);
|
||||||
appState.setFinishTime(finishTime);
|
appState.setFinishTime(finishTime);
|
||||||
appState.setCallerContext(callerContext);
|
appState.setCallerContext(callerContext);
|
||||||
return appState;
|
return appState;
|
||||||
|
@ -63,7 +65,8 @@ public abstract class ApplicationStateData {
|
||||||
public static ApplicationStateData newInstance(long submitTime,
|
public static ApplicationStateData newInstance(long submitTime,
|
||||||
long startTime, String user,
|
long startTime, String user,
|
||||||
ApplicationSubmissionContext submissionContext, RMAppState state,
|
ApplicationSubmissionContext submissionContext, RMAppState state,
|
||||||
String diagnostics, long finishTime, CallerContext callerContext,
|
String diagnostics, long launchTime, long finishTime,
|
||||||
|
CallerContext callerContext,
|
||||||
Map<ApplicationTimeoutType, Long> applicationTimeouts) {
|
Map<ApplicationTimeoutType, Long> applicationTimeouts) {
|
||||||
ApplicationStateData appState =
|
ApplicationStateData appState =
|
||||||
Records.newRecord(ApplicationStateData.class);
|
Records.newRecord(ApplicationStateData.class);
|
||||||
|
@ -73,6 +76,7 @@ public abstract class ApplicationStateData {
|
||||||
appState.setApplicationSubmissionContext(submissionContext);
|
appState.setApplicationSubmissionContext(submissionContext);
|
||||||
appState.setState(state);
|
appState.setState(state);
|
||||||
appState.setDiagnostics(diagnostics);
|
appState.setDiagnostics(diagnostics);
|
||||||
|
appState.setLaunchTime(launchTime);
|
||||||
appState.setFinishTime(finishTime);
|
appState.setFinishTime(finishTime);
|
||||||
appState.setCallerContext(callerContext);
|
appState.setCallerContext(callerContext);
|
||||||
appState.setApplicationTimeouts(applicationTimeouts);
|
appState.setApplicationTimeouts(applicationTimeouts);
|
||||||
|
@ -82,7 +86,7 @@ public abstract class ApplicationStateData {
|
||||||
public static ApplicationStateData newInstance(long submitTime,
|
public static ApplicationStateData newInstance(long submitTime,
|
||||||
long startTime, ApplicationSubmissionContext context, String user,
|
long startTime, ApplicationSubmissionContext context, String user,
|
||||||
CallerContext callerContext) {
|
CallerContext callerContext) {
|
||||||
return newInstance(submitTime, startTime, user, context, null, "", 0,
|
return newInstance(submitTime, startTime, user, context, null, "", 0, 0,
|
||||||
callerContext);
|
callerContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,6 +140,20 @@ public abstract class ApplicationStateData {
|
||||||
@Unstable
|
@Unstable
|
||||||
public abstract void setStartTime(long startTime);
|
public abstract void setStartTime(long startTime);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the <em>launch time</em> of the application.
|
||||||
|
* @return <em>launch time</em> of the application
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
|
public abstract long getLaunchTime();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
|
public abstract void setLaunchTime(long launchTime);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The application submitter
|
* The application submitter
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -120,6 +120,19 @@ public class ApplicationStateDataPBImpl extends ApplicationStateData {
|
||||||
builder.setStartTime(startTime);
|
builder.setStartTime(startTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getLaunchTime() {
|
||||||
|
ApplicationStateDataProtoOrBuilder p = viaProto ? proto : builder;
|
||||||
|
return p.getLaunchTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLaunchTime(long launchTime) {
|
||||||
|
maybeInitBuilder();
|
||||||
|
builder.setLaunchTime(launchTime);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUser() {
|
public String getUser() {
|
||||||
ApplicationStateDataProtoOrBuilder p = viaProto ? proto : builder;
|
ApplicationStateDataProtoOrBuilder p = viaProto ? proto : builder;
|
||||||
|
|
|
@ -180,7 +180,15 @@ public interface RMApp extends EventHandler<RMAppEvent> {
|
||||||
* @return the submit time of the application.
|
* @return the submit time of the application.
|
||||||
*/
|
*/
|
||||||
long getSubmitTime();
|
long getSubmitTime();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The launch time of the application.
|
||||||
|
* Since getStartTime() returns what is essentially submit time,
|
||||||
|
* this new field is to prevent potential backwards compatibility issues.
|
||||||
|
* @return the launch time of the application.
|
||||||
|
*/
|
||||||
|
long getLaunchTime();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The tracking url for the application master.
|
* The tracking url for the application master.
|
||||||
* @return the tracking url for the application master.
|
* @return the tracking url for the application master.
|
||||||
|
|
|
@ -37,6 +37,12 @@ public class RMAppEvent extends AbstractEvent<RMAppEventType>{
|
||||||
this.diagnosticMsg = diagnostic;
|
this.diagnosticMsg = diagnostic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RMAppEvent(ApplicationId appId, RMAppEventType type, long timeStamp) {
|
||||||
|
super(type, timeStamp);
|
||||||
|
this.appId = appId;
|
||||||
|
this.diagnosticMsg = "";
|
||||||
|
}
|
||||||
|
|
||||||
public ApplicationId getApplicationId() {
|
public ApplicationId getApplicationId() {
|
||||||
return this.appId;
|
return this.appId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ public enum RMAppEventType {
|
||||||
ATTEMPT_FAILED,
|
ATTEMPT_FAILED,
|
||||||
ATTEMPT_KILLED,
|
ATTEMPT_KILLED,
|
||||||
NODE_UPDATE,
|
NODE_UPDATE,
|
||||||
|
ATTEMPT_LAUNCHED,
|
||||||
|
|
||||||
// Source: Container and ResourceTracker
|
// Source: Container and ResourceTracker
|
||||||
APP_RUNNING_ON_NODE,
|
APP_RUNNING_ON_NODE,
|
||||||
|
|
|
@ -164,6 +164,7 @@ public class RMAppImpl implements RMApp, Recoverable {
|
||||||
|
|
||||||
// Mutable fields
|
// Mutable fields
|
||||||
private long startTime;
|
private long startTime;
|
||||||
|
private long launchTime = 0;
|
||||||
private long finishTime = 0;
|
private long finishTime = 0;
|
||||||
private long storedFinishTime = 0;
|
private long storedFinishTime = 0;
|
||||||
private int firstAttemptIdInStateStore = 1;
|
private int firstAttemptIdInStateStore = 1;
|
||||||
|
@ -290,6 +291,10 @@ public class RMAppImpl implements RMApp, Recoverable {
|
||||||
.addTransition(RMAppState.ACCEPTED, RMAppState.ACCEPTED,
|
.addTransition(RMAppState.ACCEPTED, RMAppState.ACCEPTED,
|
||||||
RMAppEventType.APP_RUNNING_ON_NODE,
|
RMAppEventType.APP_RUNNING_ON_NODE,
|
||||||
new AppRunningOnNodeTransition())
|
new AppRunningOnNodeTransition())
|
||||||
|
// Handle AppAttemptLaunch to upate the launchTime and publish to ATS
|
||||||
|
.addTransition(RMAppState.ACCEPTED, RMAppState.ACCEPTED,
|
||||||
|
RMAppEventType.ATTEMPT_LAUNCHED,
|
||||||
|
new AttemptLaunchedTransition())
|
||||||
|
|
||||||
// Transitions from RUNNING state
|
// Transitions from RUNNING state
|
||||||
.addTransition(RMAppState.RUNNING, RMAppState.RUNNING,
|
.addTransition(RMAppState.RUNNING, RMAppState.RUNNING,
|
||||||
|
@ -784,9 +789,9 @@ public class RMAppImpl implements RMApp, Recoverable {
|
||||||
this.applicationId, currentApplicationAttemptId, this.user,
|
this.applicationId, currentApplicationAttemptId, this.user,
|
||||||
this.queue, this.name, host, rpcPort, clientToAMToken,
|
this.queue, this.name, host, rpcPort, clientToAMToken,
|
||||||
createApplicationState(), diags, trackingUrl, this.startTime,
|
createApplicationState(), diags, trackingUrl, this.startTime,
|
||||||
this.finishTime, finishState, appUsageReport, origTrackingUrl,
|
this.launchTime, this.finishTime, finishState, appUsageReport,
|
||||||
progress, this.applicationType, amrmToken, applicationTags,
|
origTrackingUrl, progress, this.applicationType, amrmToken,
|
||||||
this.getApplicationPriority());
|
applicationTags, this.getApplicationPriority());
|
||||||
report.setLogAggregationStatus(logAggregationStatus);
|
report.setLogAggregationStatus(logAggregationStatus);
|
||||||
report.setUnmanagedApp(submissionContext.getUnmanagedAM());
|
report.setUnmanagedApp(submissionContext.getUnmanagedAM());
|
||||||
report.setAppNodeLabelExpression(getAppNodeLabelExpression());
|
report.setAppNodeLabelExpression(getAppNodeLabelExpression());
|
||||||
|
@ -839,6 +844,17 @@ public class RMAppImpl implements RMApp, Recoverable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getLaunchTime() {
|
||||||
|
this.readLock.lock();
|
||||||
|
|
||||||
|
try {
|
||||||
|
return this.launchTime;
|
||||||
|
} finally {
|
||||||
|
this.readLock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getSubmitTime() {
|
public long getSubmitTime() {
|
||||||
return this.submitTime;
|
return this.submitTime;
|
||||||
|
@ -936,6 +952,7 @@ public class RMAppImpl implements RMApp, Recoverable {
|
||||||
.getDiagnostics());
|
.getDiagnostics());
|
||||||
this.storedFinishTime = appState.getFinishTime();
|
this.storedFinishTime = appState.getFinishTime();
|
||||||
this.startTime = appState.getStartTime();
|
this.startTime = appState.getStartTime();
|
||||||
|
this.launchTime = appState.getLaunchTime();
|
||||||
this.callerContext = appState.getCallerContext();
|
this.callerContext = appState.getCallerContext();
|
||||||
this.applicationTimeouts = appState.getApplicationTimeouts();
|
this.applicationTimeouts = appState.getApplicationTimeouts();
|
||||||
// If interval > 0, some attempts might have been deleted.
|
// If interval > 0, some attempts might have been deleted.
|
||||||
|
@ -1038,6 +1055,21 @@ public class RMAppImpl implements RMApp, Recoverable {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final class AttemptLaunchedTransition
|
||||||
|
extends RMAppTransition {
|
||||||
|
@Override
|
||||||
|
public void transition(RMAppImpl app, RMAppEvent event) {
|
||||||
|
|
||||||
|
if(app.launchTime == 0) {
|
||||||
|
LOG.info("update the launch time for applicationId: "+
|
||||||
|
app.getApplicationId()+", attemptId: "+
|
||||||
|
app.getCurrentAppAttempt().getAppAttemptId()+
|
||||||
|
"launchTime: "+event.getTimestamp());
|
||||||
|
app.launchTime = event.getTimestamp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static final class AppRunningOnNodeTransition extends RMAppTransition {
|
private static final class AppRunningOnNodeTransition extends RMAppTransition {
|
||||||
public void transition(RMAppImpl app, RMAppEvent event) {
|
public void transition(RMAppImpl app, RMAppEvent event) {
|
||||||
RMAppRunningOnNodeEvent nodeAddedEvent = (RMAppRunningOnNodeEvent) event;
|
RMAppRunningOnNodeEvent nodeAddedEvent = (RMAppRunningOnNodeEvent) event;
|
||||||
|
@ -1297,7 +1329,8 @@ public class RMAppImpl implements RMApp, Recoverable {
|
||||||
ApplicationStateData appState =
|
ApplicationStateData appState =
|
||||||
ApplicationStateData.newInstance(this.submitTime, this.startTime,
|
ApplicationStateData.newInstance(this.submitTime, this.startTime,
|
||||||
this.user, this.submissionContext,
|
this.user, this.submissionContext,
|
||||||
stateToBeStored, diags, this.storedFinishTime, this.callerContext);
|
stateToBeStored, diags, this.launchTime, this.storedFinishTime,
|
||||||
|
this.callerContext);
|
||||||
appState.setApplicationTimeouts(this.applicationTimeouts);
|
appState.setApplicationTimeouts(this.applicationTimeouts);
|
||||||
this.rmContext.getStateStore().updateApplicationState(appState);
|
this.rmContext.getStateStore().updateApplicationState(appState);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,13 @@ public class RMAppAttemptEvent extends AbstractEvent<RMAppAttemptEventType> {
|
||||||
this.diagnosticMsg = diagnostics;
|
this.diagnosticMsg = diagnostics;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RMAppAttemptEvent(ApplicationAttemptId appAttemptId,
|
||||||
|
RMAppAttemptEventType type, long timeStamp) {
|
||||||
|
super(type, timeStamp);
|
||||||
|
this.appAttemptId = appAttemptId;
|
||||||
|
this.diagnosticMsg = "";
|
||||||
|
}
|
||||||
|
|
||||||
public ApplicationAttemptId getApplicationAttemptId() {
|
public ApplicationAttemptId getApplicationAttemptId() {
|
||||||
return this.appAttemptId;
|
return this.appAttemptId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1557,7 +1557,9 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable {
|
||||||
appAttempt.launchAMStartTime;
|
appAttempt.launchAMStartTime;
|
||||||
ClusterMetrics.getMetrics().addAMLaunchDelay(delay);
|
ClusterMetrics.getMetrics().addAMLaunchDelay(delay);
|
||||||
}
|
}
|
||||||
|
appAttempt.eventHandler.handle(
|
||||||
|
new RMAppEvent(appAttempt.getAppAttemptId().getApplicationId(),
|
||||||
|
RMAppEventType.ATTEMPT_LAUNCHED, event.getTimestamp()));
|
||||||
appAttempt
|
appAttempt
|
||||||
.updateAMLaunchDiagnostics(AMState.LAUNCHED.getDiagnosticMessage());
|
.updateAMLaunchDiagnostics(AMState.LAUNCHED.getDiagnosticMessage());
|
||||||
// Register with AMLivelinessMonitor
|
// Register with AMLivelinessMonitor
|
||||||
|
|
|
@ -89,6 +89,7 @@ public class FairSchedulerAppsBlock extends HtmlBlock {
|
||||||
th(".queue", "Queue").
|
th(".queue", "Queue").
|
||||||
th(".fairshare", "Fair Share").
|
th(".fairshare", "Fair Share").
|
||||||
th(".starttime", "StartTime").
|
th(".starttime", "StartTime").
|
||||||
|
th(".launchTime", "LaunchTime").
|
||||||
th(".finishtime", "FinishTime").
|
th(".finishtime", "FinishTime").
|
||||||
th(".state", "State").
|
th(".state", "State").
|
||||||
th(".finalstatus", "FinalStatus").
|
th(".finalstatus", "FinalStatus").
|
||||||
|
@ -135,6 +136,7 @@ public class FairSchedulerAppsBlock extends HtmlBlock {
|
||||||
appInfo.getQueue()))).append("\",\"")
|
appInfo.getQueue()))).append("\",\"")
|
||||||
.append(fairShare).append("\",\"")
|
.append(fairShare).append("\",\"")
|
||||||
.append(appInfo.getStartTime()).append("\",\"")
|
.append(appInfo.getStartTime()).append("\",\"")
|
||||||
|
.append(appInfo.getLaunchTime()).append("\",\"")
|
||||||
.append(appInfo.getFinishTime()).append("\",\"")
|
.append(appInfo.getFinishTime()).append("\",\"")
|
||||||
.append(appInfo.getState()).append("\",\"")
|
.append(appInfo.getState()).append("\",\"")
|
||||||
.append(appInfo.getFinalStatus()).append("\",\"")
|
.append(appInfo.getFinalStatus()).append("\",\"")
|
||||||
|
|
|
@ -62,6 +62,7 @@ public class RMAppsBlock extends AppsBlock {
|
||||||
.th(".name", "Name").th(".type", "Application Type")
|
.th(".name", "Name").th(".type", "Application Type")
|
||||||
.th(".queue", "Queue").th(".priority", "Application Priority")
|
.th(".queue", "Queue").th(".priority", "Application Priority")
|
||||||
.th(".starttime", "StartTime")
|
.th(".starttime", "StartTime")
|
||||||
|
.th("launchtime", "LaunchTime")
|
||||||
.th(".finishtime", "FinishTime").th(".state", "State")
|
.th(".finishtime", "FinishTime").th(".state", "State")
|
||||||
.th(".finalstatus", "FinalStatus")
|
.th(".finalstatus", "FinalStatus")
|
||||||
.th(".runningcontainer", "Running Containers")
|
.th(".runningcontainer", "Running Containers")
|
||||||
|
@ -134,6 +135,7 @@ public class RMAppsBlock extends AppsBlock {
|
||||||
.getQueue()))).append("\",\"").append(String
|
.getQueue()))).append("\",\"").append(String
|
||||||
.valueOf(app.getPriority()))
|
.valueOf(app.getPriority()))
|
||||||
.append("\",\"").append(app.getStartedTime())
|
.append("\",\"").append(app.getStartedTime())
|
||||||
|
.append("\",\"").append(app.getLaunchTime())
|
||||||
.append("\",\"").append(app.getFinishedTime())
|
.append("\",\"").append(app.getFinishedTime())
|
||||||
.append("\",\"")
|
.append("\",\"")
|
||||||
.append(app.getAppState() == null ? UNAVAILABLE : app.getAppState())
|
.append(app.getAppState() == null ? UNAVAILABLE : app.getAppState())
|
||||||
|
|
|
@ -87,6 +87,7 @@ public class AppInfo {
|
||||||
|
|
||||||
// these are only allowed if acls allow
|
// these are only allowed if acls allow
|
||||||
protected long startedTime;
|
protected long startedTime;
|
||||||
|
private long launchTime;
|
||||||
protected long finishedTime;
|
protected long finishedTime;
|
||||||
protected long elapsedTime;
|
protected long elapsedTime;
|
||||||
protected String amContainerLogs;
|
protected String amContainerLogs;
|
||||||
|
@ -181,6 +182,7 @@ public class AppInfo {
|
||||||
this.clusterId = ResourceManager.getClusterTimeStamp();
|
this.clusterId = ResourceManager.getClusterTimeStamp();
|
||||||
if (hasAccess) {
|
if (hasAccess) {
|
||||||
this.startedTime = app.getStartTime();
|
this.startedTime = app.getStartTime();
|
||||||
|
this.launchTime = app.getLaunchTime();
|
||||||
this.finishedTime = app.getFinishTime();
|
this.finishedTime = app.getFinishTime();
|
||||||
this.elapsedTime =
|
this.elapsedTime =
|
||||||
Times.elapsed(app.getStartTime(), app.getFinishTime());
|
Times.elapsed(app.getStartTime(), app.getFinishTime());
|
||||||
|
@ -394,6 +396,10 @@ public class AppInfo {
|
||||||
return this.startedTime;
|
return this.startedTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getLaunchTime() {
|
||||||
|
return this.launchTime;
|
||||||
|
}
|
||||||
|
|
||||||
public long getFinishTime() {
|
public long getFinishTime() {
|
||||||
return this.finishedTime;
|
return this.finishedTime;
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,6 +70,7 @@ message ApplicationStateDataProto {
|
||||||
optional int64 finish_time = 7;
|
optional int64 finish_time = 7;
|
||||||
optional hadoop.common.RPCCallerContextProto caller_context = 8;
|
optional hadoop.common.RPCCallerContextProto caller_context = 8;
|
||||||
repeated ApplicationTimeoutMapProto application_timeouts = 9;
|
repeated ApplicationTimeoutMapProto application_timeouts = 9;
|
||||||
|
optional int64 launch_time = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ApplicationAttemptStateDataProto {
|
message ApplicationAttemptStateDataProto {
|
||||||
|
|
|
@ -92,7 +92,12 @@ public abstract class MockAsm extends MockApps {
|
||||||
public long getSubmitTime() {
|
public long getSubmitTime() {
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getLaunchTime() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getFinishTime() {
|
public long getFinishTime() {
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
@ -272,6 +277,7 @@ public abstract class MockAsm extends MockApps {
|
||||||
final String name = newAppName();
|
final String name = newAppName();
|
||||||
final String queue = newQueue();
|
final String queue = newQueue();
|
||||||
final long start = 123456 + i * 1000;
|
final long start = 123456 + i * 1000;
|
||||||
|
final long launch = start + i * 100;
|
||||||
final long finish = 234567 + i * 1000;
|
final long finish = 234567 + i * 1000;
|
||||||
final String type = YarnConfiguration.DEFAULT_APPLICATION_TYPE;
|
final String type = YarnConfiguration.DEFAULT_APPLICATION_TYPE;
|
||||||
YarnApplicationState[] allStates = YarnApplicationState.values();
|
YarnApplicationState[] allStates = YarnApplicationState.values();
|
||||||
|
@ -307,6 +313,11 @@ public abstract class MockAsm extends MockApps {
|
||||||
return start;
|
return start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getLaunchTime() {
|
||||||
|
return launch;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getFinishTime() {
|
public long getFinishTime() {
|
||||||
return finish;
|
return finish;
|
||||||
|
@ -357,7 +368,7 @@ public abstract class MockAsm extends MockApps {
|
||||||
ApplicationReport report = ApplicationReport.newInstance(
|
ApplicationReport report = ApplicationReport.newInstance(
|
||||||
getApplicationId(), appAttemptId, getUser(), getQueue(),
|
getApplicationId(), appAttemptId, getUser(), getQueue(),
|
||||||
getName(), null, 0, null, null, getDiagnostics().toString(),
|
getName(), null, 0, null, null, getDiagnostics().toString(),
|
||||||
getTrackingUrl(), getStartTime(), getFinishTime(),
|
getTrackingUrl(), getLaunchTime(), getStartTime(), getFinishTime(),
|
||||||
getFinalApplicationStatus(), usageReport , null, getProgress(),
|
getFinalApplicationStatus(), usageReport , null, getProgress(),
|
||||||
type, null);
|
type, null);
|
||||||
return report;
|
return report;
|
||||||
|
|
|
@ -358,7 +358,7 @@ public class RMStateStoreTestBase {
|
||||||
ApplicationStateData.newInstance(appState.getSubmitTime(),
|
ApplicationStateData.newInstance(appState.getSubmitTime(),
|
||||||
appState.getStartTime(), appState.getUser(),
|
appState.getStartTime(), appState.getUser(),
|
||||||
appState.getApplicationSubmissionContext(), RMAppState.FINISHED,
|
appState.getApplicationSubmissionContext(), RMAppState.FINISHED,
|
||||||
"appDiagnostics", 1234, appState.getCallerContext());
|
"appDiagnostics", 123, 1234, appState.getCallerContext());
|
||||||
appState2.attempts.putAll(appState.attempts);
|
appState2.attempts.putAll(appState.attempts);
|
||||||
store.updateApplicationState(appState2);
|
store.updateApplicationState(appState2);
|
||||||
|
|
||||||
|
@ -384,7 +384,7 @@ public class RMStateStoreTestBase {
|
||||||
ApplicationStateData dummyApp =
|
ApplicationStateData dummyApp =
|
||||||
ApplicationStateData.newInstance(appState.getSubmitTime(),
|
ApplicationStateData.newInstance(appState.getSubmitTime(),
|
||||||
appState.getStartTime(), appState.getUser(), dummyContext,
|
appState.getStartTime(), appState.getUser(), dummyContext,
|
||||||
RMAppState.FINISHED, "appDiagnostics", 1234, null);
|
RMAppState.FINISHED, "appDiagnostics", 123, 1234, null);
|
||||||
store.updateApplicationState(dummyApp);
|
store.updateApplicationState(dummyApp);
|
||||||
|
|
||||||
ApplicationAttemptId dummyAttemptId =
|
ApplicationAttemptId dummyAttemptId =
|
||||||
|
|
|
@ -407,7 +407,7 @@ public class TestFSRMStateStore extends RMStateStoreTestBase {
|
||||||
store.storeApplicationStateInternal(
|
store.storeApplicationStateInternal(
|
||||||
ApplicationId.newInstance(100L, 1),
|
ApplicationId.newInstance(100L, 1),
|
||||||
ApplicationStateData.newInstance(111, 111, "user", null,
|
ApplicationStateData.newInstance(111, 111, "user", null,
|
||||||
RMAppState.ACCEPTED, "diagnostics", 333, null));
|
RMAppState.ACCEPTED, "diagnostics", 222, 333, null));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
assertionFailedInThread.set(true);
|
assertionFailedInThread.set(true);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
|
@ -790,7 +790,7 @@ public class TestZKRMStateStore extends RMStateStoreTestBase {
|
||||||
long finishTime, boolean isFinished) {
|
long finishTime, boolean isFinished) {
|
||||||
return ApplicationStateData.newInstance(submitTime, startTime, "test",
|
return ApplicationStateData.newInstance(submitTime, startTime, "test",
|
||||||
ctxt, isFinished ? RMAppState.FINISHED : null, isFinished ?
|
ctxt, isFinished ? RMAppState.FINISHED : null, isFinished ?
|
||||||
"appDiagnostics" : "", isFinished ? finishTime : 0, null);
|
"appDiagnostics" : "", 0, isFinished ? finishTime : 0, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ApplicationAttemptStateData createFinishedAttempt(
|
private static ApplicationAttemptStateData createFinishedAttempt(
|
||||||
|
|
|
@ -57,6 +57,7 @@ public class MockRMApp implements RMApp {
|
||||||
String name = MockApps.newAppName();
|
String name = MockApps.newAppName();
|
||||||
String queue = MockApps.newQueue();
|
String queue = MockApps.newQueue();
|
||||||
long start = System.currentTimeMillis() - (int) (Math.random() * DT);
|
long start = System.currentTimeMillis() - (int) (Math.random() * DT);
|
||||||
|
private long launch = start;
|
||||||
long submit = start - (int) (Math.random() * DT);
|
long submit = start - (int) (Math.random() * DT);
|
||||||
long finish = 0;
|
long finish = 0;
|
||||||
RMAppState state = RMAppState.NEW;
|
RMAppState state = RMAppState.NEW;
|
||||||
|
@ -194,6 +195,11 @@ public class MockRMApp implements RMApp {
|
||||||
return submit;
|
return submit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getLaunchTime() {
|
||||||
|
return launch;
|
||||||
|
}
|
||||||
|
|
||||||
public void setStartTime(long time) {
|
public void setStartTime(long time) {
|
||||||
this.start = time;
|
this.start = time;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1239,7 +1239,7 @@ public class TestRMAppTransitions {
|
||||||
ApplicationStateData appState =
|
ApplicationStateData appState =
|
||||||
ApplicationStateData.newInstance(app.getSubmitTime(), app.getStartTime(),
|
ApplicationStateData.newInstance(app.getSubmitTime(), app.getStartTime(),
|
||||||
app.getUser(), app.getApplicationSubmissionContext(), rmAppState,
|
app.getUser(), app.getApplicationSubmissionContext(), rmAppState,
|
||||||
null, app.getFinishTime(), null);
|
null, app.getLaunchTime(), app.getFinishTime(), null);
|
||||||
applicationState.put(app.getApplicationId(), appState);
|
applicationState.put(app.getApplicationId(), appState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -257,7 +257,7 @@ public class TestRMWebApp {
|
||||||
app.getName(), (String) null, 0, (Token) null,
|
app.getName(), (String) null, 0, (Token) null,
|
||||||
app.createApplicationState(),
|
app.createApplicationState(),
|
||||||
app.getDiagnostics().toString(), (String) null,
|
app.getDiagnostics().toString(), (String) null,
|
||||||
app.getStartTime(), app.getFinishTime(),
|
app.getStartTime(), app.getLaunchTime(), app.getFinishTime(),
|
||||||
app.getFinalApplicationStatus(),
|
app.getFinalApplicationStatus(),
|
||||||
(ApplicationResourceUsageReport) null, app.getTrackingUrl(),
|
(ApplicationResourceUsageReport) null, app.getTrackingUrl(),
|
||||||
app.getProgress(), app.getApplicationType(), (Token) null);
|
app.getProgress(), app.getApplicationType(), (Token) null);
|
||||||
|
|
|
@ -1553,6 +1553,7 @@ public class TestRMWebServicesApps extends JerseyTestBase {
|
||||||
WebServicesTestUtils.getXmlString(element, "diagnostics"),
|
WebServicesTestUtils.getXmlString(element, "diagnostics"),
|
||||||
WebServicesTestUtils.getXmlLong(element, "clusterId"),
|
WebServicesTestUtils.getXmlLong(element, "clusterId"),
|
||||||
WebServicesTestUtils.getXmlLong(element, "startedTime"),
|
WebServicesTestUtils.getXmlLong(element, "startedTime"),
|
||||||
|
WebServicesTestUtils.getXmlLong(element, "launchTime"),
|
||||||
WebServicesTestUtils.getXmlLong(element, "finishedTime"),
|
WebServicesTestUtils.getXmlLong(element, "finishedTime"),
|
||||||
WebServicesTestUtils.getXmlLong(element, "elapsedTime"),
|
WebServicesTestUtils.getXmlLong(element, "elapsedTime"),
|
||||||
WebServicesTestUtils.getXmlString(element, "amHostHttpAddress"),
|
WebServicesTestUtils.getXmlString(element, "amHostHttpAddress"),
|
||||||
|
@ -1603,7 +1604,7 @@ public class TestRMWebServicesApps extends JerseyTestBase {
|
||||||
public void verifyAppInfo(JSONObject info, RMApp app, boolean hasResourceReqs)
|
public void verifyAppInfo(JSONObject info, RMApp app, boolean hasResourceReqs)
|
||||||
throws JSONException, Exception {
|
throws JSONException, Exception {
|
||||||
|
|
||||||
int expectedNumberOfElements = 39 + (hasResourceReqs ? 2 : 0);
|
int expectedNumberOfElements = 40 + (hasResourceReqs ? 2 : 0);
|
||||||
String appNodeLabelExpression = null;
|
String appNodeLabelExpression = null;
|
||||||
String amNodeLabelExpression = null;
|
String amNodeLabelExpression = null;
|
||||||
if (app.getApplicationSubmissionContext()
|
if (app.getApplicationSubmissionContext()
|
||||||
|
@ -1629,8 +1630,10 @@ public class TestRMWebServicesApps extends JerseyTestBase {
|
||||||
info.getString("state"), info.getString("finalStatus"),
|
info.getString("state"), info.getString("finalStatus"),
|
||||||
(float) info.getDouble("progress"), info.getString("trackingUI"),
|
(float) info.getDouble("progress"), info.getString("trackingUI"),
|
||||||
info.getString("diagnostics"), info.getLong("clusterId"),
|
info.getString("diagnostics"), info.getLong("clusterId"),
|
||||||
info.getLong("startedTime"), info.getLong("finishedTime"),
|
info.getLong("startedTime"), info.getLong("launchTime"),
|
||||||
info.getLong("elapsedTime"), info.getString("amHostHttpAddress"),
|
info.getLong("finishedTime"),
|
||||||
|
info.getLong("elapsedTime"),
|
||||||
|
info.getString("amHostHttpAddress"),
|
||||||
info.getString("amContainerLogs"), info.getInt("allocatedMB"),
|
info.getString("amContainerLogs"), info.getInt("allocatedMB"),
|
||||||
info.getInt("allocatedVCores"), info.getInt("runningContainers"),
|
info.getInt("allocatedVCores"), info.getInt("runningContainers"),
|
||||||
(float) info.getDouble("queueUsagePercentage"),
|
(float) info.getDouble("queueUsagePercentage"),
|
||||||
|
@ -1653,8 +1656,9 @@ public class TestRMWebServicesApps extends JerseyTestBase {
|
||||||
public void verifyAppInfoGeneric(RMApp app, String id, String user,
|
public void verifyAppInfoGeneric(RMApp app, String id, String user,
|
||||||
String name, String applicationType, String queue, int prioirty,
|
String name, String applicationType, String queue, int prioirty,
|
||||||
String state, String finalStatus, float progress, String trackingUI,
|
String state, String finalStatus, float progress, String trackingUI,
|
||||||
String diagnostics, long clusterId, long startedTime, long finishedTime,
|
String diagnostics, long clusterId, long startedTime,
|
||||||
long elapsedTime, String amHostHttpAddress, String amContainerLogs,
|
long launchTime, long finishedTime, long elapsedTime,
|
||||||
|
String amHostHttpAddress, String amContainerLogs,
|
||||||
int allocatedMB, int allocatedVCores, int numContainers,
|
int allocatedMB, int allocatedVCores, int numContainers,
|
||||||
float queueUsagePerc, float clusterUsagePerc,
|
float queueUsagePerc, float clusterUsagePerc,
|
||||||
int preemptedResourceMB, int preemptedResourceVCores,
|
int preemptedResourceMB, int preemptedResourceVCores,
|
||||||
|
|
Loading…
Reference in New Issue