MAPREDUCE-6649. getFailureInfo not returning any failure info. Contributed by Eric Badger
This commit is contained in:
parent
aa457912ca
commit
1e33c05a7e
|
@ -142,6 +142,7 @@ public class CompletedJob implements org.apache.hadoop.mapreduce.v2.app.job.Job
|
||||||
report.setFinishTime(jobInfo.getFinishTime());
|
report.setFinishTime(jobInfo.getFinishTime());
|
||||||
report.setJobName(jobInfo.getJobname());
|
report.setJobName(jobInfo.getJobname());
|
||||||
report.setUser(jobInfo.getUsername());
|
report.setUser(jobInfo.getUsername());
|
||||||
|
report.setDiagnostics(jobInfo.getErrorInfo());
|
||||||
|
|
||||||
if ( getTotalMaps() == 0 ) {
|
if ( getTotalMaps() == 0 ) {
|
||||||
report.setMapProgress(1.0f);
|
report.setMapProgress(1.0f);
|
||||||
|
@ -334,6 +335,12 @@ public class CompletedJob implements org.apache.hadoop.mapreduce.v2.app.job.Job
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected JobHistoryParser createJobHistoryParser(Path historyFileAbsolute)
|
||||||
|
throws IOException {
|
||||||
|
return new JobHistoryParser(historyFileAbsolute.getFileSystem(conf),
|
||||||
|
historyFileAbsolute);
|
||||||
|
}
|
||||||
|
|
||||||
//History data is leisurely loaded when task level data is requested
|
//History data is leisurely loaded when task level data is requested
|
||||||
protected synchronized void loadFullHistoryData(boolean loadTasks,
|
protected synchronized void loadFullHistoryData(boolean loadTasks,
|
||||||
Path historyFileAbsolute) throws IOException {
|
Path historyFileAbsolute) throws IOException {
|
||||||
|
@ -346,7 +353,7 @@ public class CompletedJob implements org.apache.hadoop.mapreduce.v2.app.job.Job
|
||||||
JobHistoryParser parser = null;
|
JobHistoryParser parser = null;
|
||||||
try {
|
try {
|
||||||
final FileSystem fs = historyFileAbsolute.getFileSystem(conf);
|
final FileSystem fs = historyFileAbsolute.getFileSystem(conf);
|
||||||
parser = new JobHistoryParser(fs, historyFileAbsolute);
|
parser = createJobHistoryParser(historyFileAbsolute);
|
||||||
final Path jobConfPath = new Path(historyFileAbsolute.getParent(),
|
final Path jobConfPath = new Path(historyFileAbsolute.getParent(),
|
||||||
JobHistoryUtils.getIntermediateConfFileName(jobId));
|
JobHistoryUtils.getIntermediateConfFileName(jobId));
|
||||||
final Configuration conf = new Configuration();
|
final Configuration conf = new Configuration();
|
||||||
|
|
|
@ -19,8 +19,10 @@ package org.apache.hadoop.mapreduce.v2.hs;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -28,6 +30,8 @@ import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.fs.Path;
|
import org.apache.hadoop.fs.Path;
|
||||||
import org.apache.hadoop.mapred.JobACLsManager;
|
import org.apache.hadoop.mapred.JobACLsManager;
|
||||||
import org.apache.hadoop.mapred.TaskCompletionEvent;
|
import org.apache.hadoop.mapred.TaskCompletionEvent;
|
||||||
|
import org.apache.hadoop.mapreduce.jobhistory.JobHistoryParser;
|
||||||
|
import org.apache.hadoop.mapreduce.jobhistory.JobHistoryParser.JobInfo;
|
||||||
import org.apache.hadoop.mapreduce.v2.api.records.JobId;
|
import org.apache.hadoop.mapreduce.v2.api.records.JobId;
|
||||||
import org.apache.hadoop.mapreduce.v2.api.records.JobReport;
|
import org.apache.hadoop.mapreduce.v2.api.records.JobReport;
|
||||||
import org.apache.hadoop.mapreduce.v2.api.records.JobState;
|
import org.apache.hadoop.mapreduce.v2.api.records.JobState;
|
||||||
|
@ -231,4 +235,27 @@ public class TestJobHistoryEntities {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test (timeout=30000)
|
||||||
|
public void testCompletedJobWithDiagnostics() throws Exception {
|
||||||
|
final String jobError = "Job Diagnostics";
|
||||||
|
JobInfo jobInfo = spy(new JobInfo());
|
||||||
|
when(jobInfo.getErrorInfo()).thenReturn(jobError);
|
||||||
|
when(jobInfo.getJobStatus()).thenReturn(JobState.FAILED.toString());
|
||||||
|
when(jobInfo.getAMInfos()).thenReturn(Collections.<JobHistoryParser.AMInfo>emptyList());
|
||||||
|
final JobHistoryParser mockParser = mock(JobHistoryParser.class);
|
||||||
|
when(mockParser.parse()).thenReturn(jobInfo);
|
||||||
|
HistoryFileInfo info = mock(HistoryFileInfo.class);
|
||||||
|
when(info.getConfFile()).thenReturn(fullConfPath);
|
||||||
|
when(info.getHistoryFile()).thenReturn(fullHistoryPath);
|
||||||
|
CompletedJob job =
|
||||||
|
new CompletedJob(conf, jobId, fullHistoryPath, loadTasks, "user",
|
||||||
|
info, jobAclsManager) {
|
||||||
|
@Override
|
||||||
|
protected JobHistoryParser createJobHistoryParser(
|
||||||
|
Path historyFileAbsolute) throws IOException {
|
||||||
|
return mockParser;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
assertEquals(jobError, job.getReport().getDiagnostics());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue