YARN-1933. Fixed test issues with TestAMRestart and TestNodeHealthService. Contributed by Jian He.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1587104 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Vinod Kumar Vavilapalli 2014-04-13 21:51:38 +00:00
parent 6351ee2a78
commit c6b70f4760
4 changed files with 29 additions and 10 deletions

View File

@ -118,6 +118,9 @@ Release 2.4.1 - UNRELEASED
YARN-1907. TestRMApplicationHistoryWriter#testRMWritingMassiveHistory
intermittently fails. (Mit Desai via kihwal)
YARN-1933. Fixed test issues with TestAMRestart and TestNodeHealthService.
(Jian He via vinodkv)
Release 2.4.0 - 2014-04-07
INCOMPATIBLE CHANGES

View File

@ -79,10 +79,16 @@ private Configuration getConfForNodeHealthScript() {
private void writeNodeHealthScriptFile(String scriptStr, boolean setExecutable)
throws IOException {
PrintWriter pw = new PrintWriter(new FileOutputStream(nodeHealthscriptFile));
PrintWriter pw = null;
try {
FileUtil.setWritable(nodeHealthscriptFile, true);
FileUtil.setReadable(nodeHealthscriptFile, true);
pw = new PrintWriter(new FileOutputStream(nodeHealthscriptFile));
pw.println(scriptStr);
pw.flush();
} finally {
pw.close();
}
FileUtil.setExecutable(nodeHealthscriptFile, setExecutable);
}

View File

@ -977,7 +977,7 @@ T runWithRetries() throws Exception {
Thread.sleep(zkRetryInterval);
continue;
}
LOG.error("Error while doing ZK operation.", ke);
LOG.debug("Error while doing ZK operation.", ke);
throw ke;
}
}

View File

@ -180,7 +180,6 @@ public void testAMRestartWithExistingContainers() throws Exception {
// complete container by sending the container complete event which has earlier
// attempt's attemptId
nm1.nodeHeartbeat(am1.getApplicationAttemptId(), 3, ContainerState.COMPLETE);
rm1.waitForState(nm1, containerId3, RMContainerState.COMPLETED);
// Even though the completed container containerId3 event was sent to the
// earlier failed attempt, new RMAppAttempt can also capture this container
@ -189,7 +188,7 @@ public void testAMRestartWithExistingContainers() throws Exception {
RMAppAttempt newAttempt =
app1.getRMAppAttempt(am2.getApplicationAttemptId());
// 4 containers finished, acquired/allocated/reserved/completed.
Assert.assertEquals(4, newAttempt.getJustFinishedContainers().size());
waitForContainersToFinish(4, newAttempt);
boolean container3Exists = false, container4Exists = false, container5Exists =
false, container6Exists = false;
for(ContainerStatus status : newAttempt.getJustFinishedContainers()) {
@ -230,11 +229,22 @@ public void testAMRestartWithExistingContainers() throws Exception {
Assert.assertFalse(schedulerNewAttempt.getLiveContainers().contains(
containerId2));
// all 4 normal containers finished.
Assert.assertEquals(5, newAttempt.getJustFinishedContainers().size());
System.out.println("New attempt's just finished containers: "
+ newAttempt.getJustFinishedContainers());
waitForContainersToFinish(5, newAttempt);
rm1.stop();
}
private void waitForContainersToFinish(int expectedNum, RMAppAttempt attempt)
throws InterruptedException {
int count = 0;
while (attempt.getJustFinishedContainers().size() != expectedNum
&& count < 500) {
Thread.sleep(100);
count++;
}
}
@Test
public void testNMTokensRebindOnAMRestart() throws Exception {
YarnConfiguration conf = new YarnConfiguration();