YARN-1904. Ensure exceptions thrown in ClientRMService & ApplicationHistoryClientService are uniform when application-attempt is not found. Contributed by Zhijie Shen.

This commit is contained in:
Arun C. Murthy 2015-02-05 23:48:39 -08:00
parent e2803f5a51
commit 29c77de297
3 changed files with 35 additions and 15 deletions

View File

@ -214,6 +214,10 @@ Release 2.7.0 - UNRELEASED
YARN-1582. Capacity Scheduler: add a maximum-allocation-mb setting per
queue (Thomas Graves via jlowe)
YARN-1904. Ensure exceptions thrown in ClientRMService &
ApplicationHistoryClientService are uniform when application-attempt is
not found. (zjshen via acmurthy)
OPTIMIZATIONS
BUG FIXES

View File

@ -49,9 +49,11 @@ import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenRequest;
import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenResponse;
import org.apache.hadoop.yarn.api.protocolrecords.RenewDelegationTokenRequest;
import org.apache.hadoop.yarn.api.protocolrecords.RenewDelegationTokenResponse;
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
import org.apache.hadoop.yarn.api.records.ApplicationAttemptReport;
import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerReport;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.ApplicationAttemptNotFoundException;
@ -153,13 +155,17 @@ public class ApplicationHistoryClientService extends AbstractService {
public GetApplicationAttemptReportResponse getApplicationAttemptReport(
GetApplicationAttemptReportRequest request) throws YarnException,
IOException {
ApplicationAttemptId appAttemptId = request.getApplicationAttemptId();
try {
GetApplicationAttemptReportResponse response =
GetApplicationAttemptReportResponse.newInstance(history
.getApplicationAttempt(request.getApplicationAttemptId()));
.getApplicationAttempt(appAttemptId));
return response;
} catch (IOException e) {
throw new ApplicationAttemptNotFoundException(e.getMessage());
String msg = "ApplicationAttempt with id '" + appAttemptId +
"' doesn't exist in the history store.";
LOG.error(msg, e);
throw new ApplicationAttemptNotFoundException(msg);
}
}
@ -177,14 +183,17 @@ public class ApplicationHistoryClientService extends AbstractService {
@Override
public GetApplicationReportResponse getApplicationReport(
GetApplicationReportRequest request) throws YarnException, IOException {
ApplicationId applicationId = request.getApplicationId();
try {
ApplicationId applicationId = request.getApplicationId();
GetApplicationReportResponse response =
GetApplicationReportResponse.newInstance(history
.getApplication(applicationId));
return response;
} catch (IOException e) {
throw new ApplicationNotFoundException(e.getMessage());
String msg = "Application with id '" + applicationId +
"' doesn't exist in the history store.";
LOG.error(msg, e);
throw new ApplicationNotFoundException(msg);
}
}
@ -200,13 +209,17 @@ public class ApplicationHistoryClientService extends AbstractService {
@Override
public GetContainerReportResponse getContainerReport(
GetContainerReportRequest request) throws YarnException, IOException {
ContainerId containerId = request.getContainerId();
try {
GetContainerReportResponse response =
GetContainerReportResponse.newInstance(history.getContainer(request
.getContainerId()));
GetContainerReportResponse.newInstance(
history.getContainer(containerId));
return response;
} catch (IOException e) {
throw new ContainerNotFoundException(e.getMessage());
String msg = "Container with id '" + containerId +
"' doesn't exist in the history store.";
LOG.error(msg, e);
throw new ContainerNotFoundException(msg);
}
}

View File

@ -365,8 +365,9 @@ public class ClientRMService extends AbstractService implements
if (allowAccess) {
RMAppAttempt appAttempt = application.getAppAttempts().get(appAttemptId);
if (appAttempt == null) {
throw new ApplicationAttemptNotFoundException("ApplicationAttempt "
+ appAttemptId + " Not Found in RM");
throw new ApplicationAttemptNotFoundException(
"ApplicationAttempt with id '" + appAttemptId +
"' doesn't exist in RM.");
}
ApplicationAttemptReport attemptReport = appAttempt
.createApplicationAttemptReport();
@ -450,14 +451,15 @@ public class ClientRMService extends AbstractService implements
if (allowAccess) {
RMAppAttempt appAttempt = application.getAppAttempts().get(appAttemptId);
if (appAttempt == null) {
throw new ApplicationAttemptNotFoundException("ApplicationAttempt "
+ appAttemptId + " Not Found in RM");
throw new ApplicationAttemptNotFoundException(
"ApplicationAttempt with id '" + appAttemptId +
"' doesn't exist in RM.");
}
RMContainer rmConatiner = this.rmContext.getScheduler().getRMContainer(
containerId);
if (rmConatiner == null) {
throw new ContainerNotFoundException("Container with id " + containerId
+ " not found");
throw new ContainerNotFoundException("Container with id '" + containerId
+ "' doesn't exist in RM.");
}
response = GetContainerReportResponse.newInstance(rmConatiner
.createContainerReport());
@ -499,8 +501,9 @@ public class ClientRMService extends AbstractService implements
if (allowAccess) {
RMAppAttempt appAttempt = application.getAppAttempts().get(appAttemptId);
if (appAttempt == null) {
throw new ApplicationAttemptNotFoundException("ApplicationAttempt "
+ appAttemptId + " Not Found in RM");
throw new ApplicationAttemptNotFoundException(
"ApplicationAttempt with id '" + appAttemptId +
"' doesn't exist in RM.");
}
Collection<RMContainer> rmContainers = Collections.emptyList();
SchedulerAppReport schedulerAppReport =