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:
parent
6351ee2a78
commit
c6b70f4760
@ -118,6 +118,9 @@ Release 2.4.1 - UNRELEASED
|
|||||||
YARN-1907. TestRMApplicationHistoryWriter#testRMWritingMassiveHistory
|
YARN-1907. TestRMApplicationHistoryWriter#testRMWritingMassiveHistory
|
||||||
intermittently fails. (Mit Desai via kihwal)
|
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
|
Release 2.4.0 - 2014-04-07
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
@ -79,10 +79,16 @@ private Configuration getConfForNodeHealthScript() {
|
|||||||
|
|
||||||
private void writeNodeHealthScriptFile(String scriptStr, boolean setExecutable)
|
private void writeNodeHealthScriptFile(String scriptStr, boolean setExecutable)
|
||||||
throws IOException {
|
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.println(scriptStr);
|
||||||
pw.flush();
|
pw.flush();
|
||||||
|
} finally {
|
||||||
pw.close();
|
pw.close();
|
||||||
|
}
|
||||||
FileUtil.setExecutable(nodeHealthscriptFile, setExecutable);
|
FileUtil.setExecutable(nodeHealthscriptFile, setExecutable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -977,7 +977,7 @@ T runWithRetries() throws Exception {
|
|||||||
Thread.sleep(zkRetryInterval);
|
Thread.sleep(zkRetryInterval);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
LOG.error("Error while doing ZK operation.", ke);
|
LOG.debug("Error while doing ZK operation.", ke);
|
||||||
throw ke;
|
throw ke;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -180,7 +180,6 @@ public void testAMRestartWithExistingContainers() throws Exception {
|
|||||||
// complete container by sending the container complete event which has earlier
|
// complete container by sending the container complete event which has earlier
|
||||||
// attempt's attemptId
|
// attempt's attemptId
|
||||||
nm1.nodeHeartbeat(am1.getApplicationAttemptId(), 3, ContainerState.COMPLETE);
|
nm1.nodeHeartbeat(am1.getApplicationAttemptId(), 3, ContainerState.COMPLETE);
|
||||||
rm1.waitForState(nm1, containerId3, RMContainerState.COMPLETED);
|
|
||||||
|
|
||||||
// Even though the completed container containerId3 event was sent to the
|
// Even though the completed container containerId3 event was sent to the
|
||||||
// earlier failed attempt, new RMAppAttempt can also capture this container
|
// earlier failed attempt, new RMAppAttempt can also capture this container
|
||||||
@ -189,7 +188,7 @@ public void testAMRestartWithExistingContainers() throws Exception {
|
|||||||
RMAppAttempt newAttempt =
|
RMAppAttempt newAttempt =
|
||||||
app1.getRMAppAttempt(am2.getApplicationAttemptId());
|
app1.getRMAppAttempt(am2.getApplicationAttemptId());
|
||||||
// 4 containers finished, acquired/allocated/reserved/completed.
|
// 4 containers finished, acquired/allocated/reserved/completed.
|
||||||
Assert.assertEquals(4, newAttempt.getJustFinishedContainers().size());
|
waitForContainersToFinish(4, newAttempt);
|
||||||
boolean container3Exists = false, container4Exists = false, container5Exists =
|
boolean container3Exists = false, container4Exists = false, container5Exists =
|
||||||
false, container6Exists = false;
|
false, container6Exists = false;
|
||||||
for(ContainerStatus status : newAttempt.getJustFinishedContainers()) {
|
for(ContainerStatus status : newAttempt.getJustFinishedContainers()) {
|
||||||
@ -230,11 +229,22 @@ public void testAMRestartWithExistingContainers() throws Exception {
|
|||||||
Assert.assertFalse(schedulerNewAttempt.getLiveContainers().contains(
|
Assert.assertFalse(schedulerNewAttempt.getLiveContainers().contains(
|
||||||
containerId2));
|
containerId2));
|
||||||
// all 4 normal containers finished.
|
// 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();
|
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
|
@Test
|
||||||
public void testNMTokensRebindOnAMRestart() throws Exception {
|
public void testNMTokensRebindOnAMRestart() throws Exception {
|
||||||
YarnConfiguration conf = new YarnConfiguration();
|
YarnConfiguration conf = new YarnConfiguration();
|
||||||
|
Loading…
Reference in New Issue
Block a user