瀏覽代碼

YARN-1933. Fixed test issues with TestAMRestart and TestNodeHealthService. Contributed by Jian He.
svn merge --ignore-ancestry -c 1587104 ../../trunk/


git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2.4@1587106 13f79535-47bb-0310-9956-ffa450edef68

Vinod Kumar Vavilapalli 11 年之前
父節點
當前提交
7bc11e0bf9

+ 3 - 0
hadoop-yarn-project/CHANGES.txt

@@ -50,6 +50,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

+ 11 - 5
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 @@ public class TestNodeHealthService {
   }
 
   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);
   }
 

+ 1 - 1
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 @@ public class ZKRMStateStore extends RMStateStore {
             Thread.sleep(zkRetryInterval);
             continue;
           }
-          LOG.error("Error while doing ZK operation.", ke);
+          LOG.debug("Error while doing ZK operation.", ke);
           throw ke;
         }
       }

+ 14 - 4
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 class TestAMRestart {
     // 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 class TestAMRestart {
     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 class TestAMRestart {
     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();