浏览代码

HADOOP-5120. Remove the use of FSNamesystem.getFSNamesystem() from UpgradeManagerNamenode and UpgradeObjectNamenode. (szetszwo)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/trunk@746340 13f79535-47bb-0310-9956-ffa450edef68
Tsz-wo Sze 16 年之前
父节点
当前提交
ccbdb60d02

+ 3 - 0
CHANGES.txt

@@ -115,6 +115,9 @@ Trunk (unreleased changes)
     HADOOP-5275. Add ivy directory and files to built tar.
     (Giridharan Kesavan via nigel)
 
+    HADOOP-5120. Remove the use of FSNamesystem.getFSNamesystem() from 
+    UpgradeManagerNamenode and UpgradeObjectNamenode.  (szetszwo)
+
   OPTIMIZATIONS
 
   BUG FIXES

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

@@ -4283,7 +4283,7 @@ public class FSNamesystem implements FSConstants, FSNamesystemMBean {
   }
 
   // Distributed upgrade manager
-  UpgradeManagerNamenode upgradeManager = new UpgradeManagerNamenode();
+  final UpgradeManagerNamenode upgradeManager = new UpgradeManagerNamenode(this);
 
   UpgradeStatusReport distributedUpgradeProgress(UpgradeAction action 
                                                  ) throws IOException {

+ 10 - 16
src/hdfs/org/apache/hadoop/hdfs/server/namenode/UpgradeManagerNamenode.java

@@ -17,7 +17,6 @@
  */
 package org.apache.hadoop.hdfs.server.namenode;
 
-import java.util.SortedSet;
 import java.io.IOException;
 
 import org.apache.hadoop.hdfs.protocol.FSConstants;
@@ -25,9 +24,7 @@ import org.apache.hadoop.hdfs.protocol.FSConstants.UpgradeAction;
 import org.apache.hadoop.hdfs.server.common.HdfsConstants;
 import org.apache.hadoop.hdfs.server.common.IncorrectVersionException;
 import org.apache.hadoop.hdfs.server.common.UpgradeManager;
-import org.apache.hadoop.hdfs.server.common.UpgradeObjectCollection;
 import org.apache.hadoop.hdfs.server.common.UpgradeStatusReport;
-import org.apache.hadoop.hdfs.server.common.Upgradeable;
 import org.apache.hadoop.hdfs.server.protocol.UpgradeCommand;
 
 /**
@@ -45,6 +42,12 @@ class UpgradeManagerNamenode extends UpgradeManager {
     return HdfsConstants.NodeType.NAME_NODE;
   }
 
+  private final FSNamesystem namesystem;
+
+  UpgradeManagerNamenode(FSNamesystem namesystem) {
+    this.namesystem = namesystem;    
+  }
+
   /**
    * Start distributed upgrade.
    * Instantiates distributed upgrade objects.
@@ -57,7 +60,7 @@ class UpgradeManagerNamenode extends UpgradeManager {
       initializeUpgrade();
       if(!upgradeState) return false;
       // write new upgrade state into disk
-      FSNamesystem.getFSNamesystem().getFSImage().writeAll();
+      namesystem.getFSImage().writeAll();
     }
     assert currentUpgrades != null : "currentUpgrades is null";
     this.broadcastCommand = currentUpgrades.first().startUpgrade();
@@ -106,17 +109,17 @@ class UpgradeManagerNamenode extends UpgradeManager {
   public synchronized void completeUpgrade() throws IOException {
     // set and write new upgrade state into disk
     setUpgradeState(false, FSConstants.LAYOUT_VERSION);
-    FSNamesystem.getFSNamesystem().getFSImage().writeAll();
+    namesystem.getFSImage().writeAll();
     currentUpgrades = null;
     broadcastCommand = null;
-    FSNamesystem.getFSNamesystem().leaveSafeMode(false);
+    namesystem.leaveSafeMode(false);
   }
 
   UpgradeStatusReport distributedUpgradeProgress(UpgradeAction action 
                                                 ) throws IOException {
     boolean isFinalized = false;
     if(currentUpgrades == null) { // no upgrades are in progress
-      FSImage fsimage = FSNamesystem.getFSNamesystem().getFSImage();
+      FSImage fsimage = namesystem.getFSImage();
       isFinalized = fsimage.isUpgradeFinalized();
       if(isFinalized) // upgrade is finalized
         return null;  // nothing to report
@@ -136,13 +139,4 @@ class UpgradeManagerNamenode extends UpgradeManager {
     }
     return curUO.getUpgradeStatusReport(details);
   }
-
-  public static void main(String[] args) throws IOException {
-    UpgradeManagerNamenode um = new UpgradeManagerNamenode();
-    SortedSet<Upgradeable> uos;
-    uos = UpgradeObjectCollection.getDistributedUpgrades(-4, 
-        HdfsConstants.NodeType.NAME_NODE);
-    System.out.println(uos.size());
-    um.startUpgrade();
-  }
 }

+ 0 - 5
src/hdfs/org/apache/hadoop/hdfs/server/namenode/UpgradeObjectNamenode.java

@@ -19,7 +19,6 @@ package org.apache.hadoop.hdfs.server.namenode;
 
 import java.io.IOException;
 
-import org.apache.hadoop.hdfs.protocol.FSConstants;
 import org.apache.hadoop.hdfs.server.common.HdfsConstants;
 import org.apache.hadoop.hdfs.server.common.UpgradeObject;
 import org.apache.hadoop.hdfs.server.protocol.UpgradeCommand;
@@ -55,10 +54,6 @@ public abstract class UpgradeObjectNamenode extends UpgradeObject {
                               getVersion(), (short)0);
   }
 
-  protected FSNamesystem getFSNamesystem() {
-    return FSNamesystem.getFSNamesystem();
-  }
-
   public void forceProceed() throws IOException {
     // do nothing by default
     NameNode.LOG.info("forceProceed() is not defined for the upgrade. "