MAPREDUCE-6649. getFailureInfo not returning any failure info. Contributed by Eric Badger

This commit is contained in:
Eric Payne 2016-04-16 22:07:27 +00:00
parent aa457912ca
commit 1e33c05a7e
2 changed files with 35 additions and 1 deletions

View File

@ -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();

View File

@ -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());
}
} }