svn merge -c 1551616 FIXES: MAPREDUCE-5679. TestJobHistoryParsing has race condition. Contributed by Liyin Liang

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1551619 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jason Darrell Lowe 2013-12-17 16:50:57 +00:00
parent 4aeef4181d
commit 5975cf8fa9
2 changed files with 42 additions and 39 deletions

View File

@ -103,6 +103,9 @@ Release 2.4.0 - UNRELEASED
MAPREDUCE-5623. TestJobCleanup fails because of RejectedExecutionException MAPREDUCE-5623. TestJobCleanup fails because of RejectedExecutionException
and NPE. (jlowe) and NPE. (jlowe)
MAPREDUCE-5679. TestJobHistoryParsing has race condition (Liyin Liang via
jlowe)
Release 2.3.0 - UNRELEASED Release 2.3.0 - UNRELEASED
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -340,8 +340,11 @@ public HistoryEvent answer(InvocationOnMock invocation)
PrintStream stdps = System.out; PrintStream stdps = System.out;
try { try {
System.setOut(new PrintStream(outContent)); System.setOut(new PrintStream(outContent));
HistoryViewer viewer = new HistoryViewer(fc.makeQualified( HistoryViewer viewer;
fileInfo.getHistoryFile()).toString(), conf, true); synchronized (fileInfo) {
viewer = new HistoryViewer(fc.makeQualified(
fileInfo.getHistoryFile()).toString(), conf, true);
}
viewer.print(); viewer.print();
for (TaskInfo taskInfo : allTasks.values()) { for (TaskInfo taskInfo : allTasks.values()) {
@ -398,29 +401,27 @@ public void testHistoryParsingForFailedAttempts() throws Exception {
// make sure all events are flushed // make sure all events are flushed
app.waitForState(Service.STATE.STOPPED); app.waitForState(Service.STATE.STOPPED);
String jobhistoryDir = JobHistoryUtils
.getHistoryIntermediateDoneDirForUser(conf);
JobHistory jobHistory = new JobHistory(); JobHistory jobHistory = new JobHistory();
jobHistory.init(conf); jobHistory.init(conf);
HistoryFileInfo fileInfo = jobHistory.getJobFileInfo(jobId);
JobHistoryParser parser;
JobInfo jobInfo;
synchronized (fileInfo) {
Path historyFilePath = fileInfo.getHistoryFile();
FSDataInputStream in = null;
FileContext fc = null;
try {
fc = FileContext.getFileContext(conf);
in = fc.open(fc.makeQualified(historyFilePath));
} catch (IOException ioe) {
LOG.info("Can not open history file: " + historyFilePath, ioe);
throw (new Exception("Can not open History File"));
}
JobIndexInfo jobIndexInfo = jobHistory.getJobFileInfo(jobId) parser = new JobHistoryParser(in);
.getJobIndexInfo(); jobInfo = parser.parse();
String jobhistoryFileName = FileNameIndexUtils
.getDoneFileName(jobIndexInfo);
Path historyFilePath = new Path(jobhistoryDir, jobhistoryFileName);
FSDataInputStream in = null;
FileContext fc = null;
try {
fc = FileContext.getFileContext(conf);
in = fc.open(fc.makeQualified(historyFilePath));
} catch (IOException ioe) {
LOG.info("Can not open history file: " + historyFilePath, ioe);
throw (new Exception("Can not open History File"));
} }
JobHistoryParser parser = new JobHistoryParser(in);
JobInfo jobInfo = parser.parse();
Exception parseException = parser.getParseException(); Exception parseException = parser.getParseException();
Assert.assertNull("Caught an expected exception " + parseException, Assert.assertNull("Caught an expected exception " + parseException,
parseException); parseException);
@ -465,29 +466,28 @@ public void testCountersForFailedTask() throws Exception {
// make sure all events are flushed // make sure all events are flushed
app.waitForState(Service.STATE.STOPPED); app.waitForState(Service.STATE.STOPPED);
String jobhistoryDir = JobHistoryUtils
.getHistoryIntermediateDoneDirForUser(conf);
JobHistory jobHistory = new JobHistory(); JobHistory jobHistory = new JobHistory();
jobHistory.init(conf); jobHistory.init(conf);
JobIndexInfo jobIndexInfo = jobHistory.getJobFileInfo(jobId) HistoryFileInfo fileInfo = jobHistory.getJobFileInfo(jobId);
.getJobIndexInfo();
String jobhistoryFileName = FileNameIndexUtils JobHistoryParser parser;
.getDoneFileName(jobIndexInfo); JobInfo jobInfo;
synchronized (fileInfo) {
Path historyFilePath = fileInfo.getHistoryFile();
FSDataInputStream in = null;
FileContext fc = null;
try {
fc = FileContext.getFileContext(conf);
in = fc.open(fc.makeQualified(historyFilePath));
} catch (IOException ioe) {
LOG.info("Can not open history file: " + historyFilePath, ioe);
throw (new Exception("Can not open History File"));
}
Path historyFilePath = new Path(jobhistoryDir, jobhistoryFileName); parser = new JobHistoryParser(in);
FSDataInputStream in = null; jobInfo = parser.parse();
FileContext fc = null;
try {
fc = FileContext.getFileContext(conf);
in = fc.open(fc.makeQualified(historyFilePath));
} catch (IOException ioe) {
LOG.info("Can not open history file: " + historyFilePath, ioe);
throw (new Exception("Can not open History File"));
} }
JobHistoryParser parser = new JobHistoryParser(in);
JobInfo jobInfo = parser.parse();
Exception parseException = parser.getParseException(); Exception parseException = parser.getParseException();
Assert.assertNull("Caught an expected exception " + parseException, Assert.assertNull("Caught an expected exception " + parseException,
parseException); parseException);