Просмотр исходного кода

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

git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.18@727890 13f79535-47bb-0310-9956-ffa450edef68
Konstantin Shvachko 16 лет назад
Родитель
Сommit
1b5b54feba
2 измененных файлов с 10 добавлено и 3 удалено
  1. 2 0
      CHANGES.txt
  2. 8 3
      src/hdfs/org/apache/hadoop/dfs/FSNamesystem.java

+ 2 - 0
CHANGES.txt

@@ -113,6 +113,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/dfs/FSNamesystem.java

@@ -3998,8 +3998,13 @@ 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;
     }
   }
@@ -4088,7 +4093,7 @@ 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;