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.
|
MAPREDUCE-6086. mapreduce.job.credentials.binary should allow all URIs.
|
||||||
(Zhihai Xu via kasha)
|
(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
|
Release 2.5.1 - 2014-09-05
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
@ -69,6 +69,7 @@
|
|||||||
import org.apache.hadoop.yarn.api.records.ApplicationReport;
|
import org.apache.hadoop.yarn.api.records.ApplicationReport;
|
||||||
import org.apache.hadoop.yarn.api.records.NodeId;
|
import org.apache.hadoop.yarn.api.records.NodeId;
|
||||||
import org.apache.hadoop.yarn.api.records.YarnApplicationState;
|
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.YarnException;
|
||||||
import org.apache.hadoop.yarn.exceptions.YarnRuntimeException;
|
import org.apache.hadoop.yarn.exceptions.YarnRuntimeException;
|
||||||
import org.apache.hadoop.yarn.factories.RecordFactory;
|
import org.apache.hadoop.yarn.factories.RecordFactory;
|
||||||
@ -150,6 +151,8 @@ private MRClientProtocol getProxy() throws IOException {
|
|||||||
ApplicationReport application = null;
|
ApplicationReport application = null;
|
||||||
try {
|
try {
|
||||||
application = rm.getApplicationReport(appId);
|
application = rm.getApplicationReport(appId);
|
||||||
|
} catch (ApplicationNotFoundException e) {
|
||||||
|
application = null;
|
||||||
} catch (YarnException e2) {
|
} catch (YarnException e2) {
|
||||||
throw new IOException(e2);
|
throw new IOException(e2);
|
||||||
}
|
}
|
||||||
|
@ -31,8 +31,6 @@
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
import org.junit.Assert;
|
|
||||||
|
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.mapreduce.JobID;
|
import org.apache.hadoop.mapreduce.JobID;
|
||||||
import org.apache.hadoop.mapreduce.JobStatus;
|
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.FinalApplicationStatus;
|
||||||
import org.apache.hadoop.yarn.api.records.YarnApplicationState;
|
import org.apache.hadoop.yarn.api.records.YarnApplicationState;
|
||||||
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
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.exceptions.YarnException;
|
||||||
import org.apache.hadoop.yarn.util.Records;
|
import org.apache.hadoop.yarn.util.Records;
|
||||||
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.junit.runners.Parameterized;
|
import org.junit.runners.Parameterized;
|
||||||
@ -488,7 +488,9 @@ private ApplicationReport getRunningApplicationReport(String host, int port) {
|
|||||||
private ResourceMgrDelegate getRMDelegate() throws IOException {
|
private ResourceMgrDelegate getRMDelegate() throws IOException {
|
||||||
ResourceMgrDelegate rm = mock(ResourceMgrDelegate.class);
|
ResourceMgrDelegate rm = mock(ResourceMgrDelegate.class);
|
||||||
try {
|
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) {
|
} catch (YarnException e) {
|
||||||
throw new IOException(e);
|
throw new IOException(e);
|
||||||
}
|
}
|
||||||
|
@ -90,13 +90,8 @@ protected void tearDown() throws Exception {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testGetInvalidJob() throws Exception {
|
public void testGetInvalidJob() throws Exception {
|
||||||
try {
|
RunningJob runJob = new JobClient(getJobConf()).getJob(JobID.forName("job_0_0"));
|
||||||
RunningJob runJob = new JobClient(getJobConf()).getJob(JobID.forName("job_0_0"));
|
assertNull(runJob);
|
||||||
fail("Exception is expected to thrown ahead!");
|
|
||||||
} catch (Exception e) {
|
|
||||||
assertTrue(e instanceof IOException);
|
|
||||||
assertTrue(e.getMessage().contains("ApplicationNotFoundException"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user