From c6b70f4760bc9d4028616de779ccf86219f38ec8 Mon Sep 17 00:00:00 2001 From: Vinod Kumar Vavilapalli Date: Sun, 13 Apr 2014 21:51:38 +0000 Subject: [PATCH] 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 --- hadoop-yarn-project/CHANGES.txt | 3 +++ .../nodemanager/TestNodeHealthService.java | 16 +++++++++++----- .../recovery/ZKRMStateStore.java | 2 +- .../applicationsmanager/TestAMRestart.java | 18 ++++++++++++++---- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 06fffcd6dd..ee963a94bf 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -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 diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeHealthService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeHealthService.java index 8103c1643a..6a28605a5a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeHealthService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeHealthService.java @@ -78,11 +78,17 @@ private Configuration getConfForNodeHealthScript() { } private void writeNodeHealthScriptFile(String scriptStr, boolean setExecutable) - throws IOException { - PrintWriter pw = new PrintWriter(new FileOutputStream(nodeHealthscriptFile)); - pw.println(scriptStr); - pw.flush(); - pw.close(); + throws IOException { + 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); } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/recovery/ZKRMStateStore.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/recovery/ZKRMStateStore.java index 9f06b8572e..84eea39d21 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/recovery/ZKRMStateStore.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/recovery/ZKRMStateStore.java @@ -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; } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestAMRestart.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestAMRestart.java index af33ee1f4f..6b7b464d55 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestAMRestart.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestAMRestart.java @@ -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();