MAPREDUCE-6091. YARNRunner.getJobStatus() fails with ApplicationNotFoundException if the job rolled off the RM view. Contributed by Sangjin Lee
This commit is contained in:
parent
9f03a7c018
commit
951847ba94
@ -356,6 +356,10 @@ Release 2.6.0 - UNRELEASED
|
||||
MAPREDUCE-6086. mapreduce.job.credentials.binary should allow all URIs.
|
||||
(Zhihai Xu via kasha)
|
||||
|
||||
MAPREDUCE-6091. YARNRunner.getJobStatus() fails with
|
||||
ApplicationNotFoundException if the job rolled off the RM view (Sangjin
|
||||
Lee via jlowe)
|
||||
|
||||
Release 2.5.1 - 2014-09-05
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
@ -69,6 +69,7 @@
|
||||
import org.apache.hadoop.yarn.api.records.ApplicationReport;
|
||||
import org.apache.hadoop.yarn.api.records.NodeId;
|
||||
import org.apache.hadoop.yarn.api.records.YarnApplicationState;
|
||||
import org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException;
|
||||
import org.apache.hadoop.yarn.exceptions.YarnException;
|
||||
import org.apache.hadoop.yarn.exceptions.YarnRuntimeException;
|
||||
import org.apache.hadoop.yarn.factories.RecordFactory;
|
||||
@ -150,6 +151,8 @@ private MRClientProtocol getProxy() throws IOException {
|
||||
ApplicationReport application = null;
|
||||
try {
|
||||
application = rm.getApplicationReport(appId);
|
||||
} catch (ApplicationNotFoundException e) {
|
||||
application = null;
|
||||
} catch (YarnException e2) {
|
||||
throw new IOException(e2);
|
||||
}
|
||||
|
@ -31,8 +31,6 @@
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.junit.Assert;
|
||||
|
||||
import org.apache.hadoop.conf.Configuration;
|
||||
import org.apache.hadoop.mapreduce.JobID;
|
||||
import org.apache.hadoop.mapreduce.JobStatus;
|
||||
@ -56,8 +54,10 @@
|
||||
import org.apache.hadoop.yarn.api.records.FinalApplicationStatus;
|
||||
import org.apache.hadoop.yarn.api.records.YarnApplicationState;
|
||||
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
||||
import org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException;
|
||||
import org.apache.hadoop.yarn.exceptions.YarnException;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
@ -488,7 +488,9 @@ private ApplicationReport getRunningApplicationReport(String host, int port) {
|
||||
private ResourceMgrDelegate getRMDelegate() throws IOException {
|
||||
ResourceMgrDelegate rm = mock(ResourceMgrDelegate.class);
|
||||
try {
|
||||
when(rm.getApplicationReport(jobId.getAppId())).thenReturn(null);
|
||||
ApplicationId appId = jobId.getAppId();
|
||||
when(rm.getApplicationReport(appId)).
|
||||
thenThrow(new ApplicationNotFoundException(appId + " not found"));
|
||||
} catch (YarnException e) {
|
||||
throw new IOException(e);
|
||||
}
|
||||
|
@ -90,13 +90,8 @@ protected void tearDown() throws Exception {
|
||||
}
|
||||
|
||||
public void testGetInvalidJob() throws Exception {
|
||||
try {
|
||||
RunningJob runJob = new JobClient(getJobConf()).getJob(JobID.forName("job_0_0"));
|
||||
fail("Exception is expected to thrown ahead!");
|
||||
} catch (Exception e) {
|
||||
assertTrue(e instanceof IOException);
|
||||
assertTrue(e.getMessage().contains("ApplicationNotFoundException"));
|
||||
}
|
||||
RunningJob runJob = new JobClient(getJobConf()).getJob(JobID.forName("job_0_0"));
|
||||
assertNull(runJob);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user