소스 검색

HADOOP-4904. Merge -r 727873:727874 from trunk to branch 0.19.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.19@727888 13f79535-47bb-0310-9956-ffa450edef68
Konstantin Shvachko 16 년 전
부모
커밋
46f4bcb9d3
2개의 변경된 파일11개의 추가작업 그리고 4개의 파일을 삭제
  1. 3 1
      CHANGES.txt
  2. 8 3
      src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java

+ 3 - 1
CHANGES.txt

@@ -27,7 +27,7 @@ Release 0.19.1 - Unreleased
     HADOOP-4731. Fix capacity scheduler to correctly remove job on completion 
     from waiting queue. (Amar Kamat via yhemanth)
 
-    HADOOP-4836. Correct typos in mapred related documentation.  (Jordà Polo
+    HADOOP-4836. Correct typos in mapred related documentation.  (Jord? Polo
     via szetszwo)
 
     HADOOP-4821. Usage description in the Quotas guide documentations are
@@ -1104,6 +1104,8 @@ Release 0.18.3 - Unreleased
     HADOOP-4840. TestNodeCount sometimes fails with NullPointerException.
     (hairong)
 
+    HADOOP-4904. Fix deadlock while leaving safe mode. (shv)
+
 Release 0.18.2 - 2008-11-03
 
   BUG FIXES

+ 8 - 3
src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java

@@ -4130,8 +4130,13 @@ public class FSNamesystem implements FSConstants, FSNamesystemMBean {
         }
       }
       // leave safe mode and stop the monitor
-      if(safeMode != null)
-        safeMode.leave(true);
+      try {
+        leaveSafeMode(true);
+      } catch(SafeModeException es) { // should never happen
+        String msg = "SafeModeMonitor may not run during distributed upgrade.";
+        assert false : msg;
+        throw new RuntimeException(msg, es);
+      }
       smmthread = null;
     }
   }
@@ -4220,7 +4225,7 @@ public class FSNamesystem implements FSConstants, FSNamesystemMBean {
    * Leave safe mode.
    * @throws IOException
    */
-  synchronized void leaveSafeMode(boolean checkForUpgrades) throws IOException {
+  synchronized void leaveSafeMode(boolean checkForUpgrades) throws SafeModeException {
     if (!isInSafeMode()) {
       NameNode.stateChangeLog.info("STATE* Safe mode is already OFF."); 
       return;