Browse Source

HDFS-15625: Namenode trashEmptier should not init ViewFs on startup (#2378). Contributed by Uma Maheswara Rao G.

Uma Maheswara Rao G 4 years ago
parent
commit
b76b36ebbc

+ 4 - 1
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java

@@ -41,6 +41,7 @@ import org.apache.hadoop.ha.ServiceFailedException;
 import org.apache.hadoop.hdfs.DFSConfigKeys;
 import org.apache.hadoop.hdfs.DFSUtil;
 import org.apache.hadoop.hdfs.DFSUtilClient;
+import org.apache.hadoop.hdfs.DistributedFileSystem;
 import org.apache.hadoop.hdfs.HAUtil;
 import org.apache.hadoop.hdfs.HdfsConfiguration;
 import org.apache.hadoop.hdfs.client.HdfsClientConfigKeys;
@@ -927,7 +928,9 @@ public class NameNode extends ReconfigurableBase implements
         new PrivilegedExceptionAction<FileSystem>() {
           @Override
           public FileSystem run() throws IOException {
-            return FileSystem.get(conf);
+            FileSystem dfs = new DistributedFileSystem();
+            dfs.initialize(FileSystem.getDefaultUri(conf), conf);
+            return dfs;
           }
         });
     this.emptier = new Thread(new Trash(fs, conf).getEmptier(), "Trash Emptier");

+ 2 - 2
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestNNStartupWhenViewFSOverloadSchemeEnabled.java

@@ -60,7 +60,7 @@ public class TestNNStartupWhenViewFSOverloadSchemeEnabled {
   @Test(timeout = 30000)
   public void testHANameNodeAndDataNodeStartup() throws Exception {
     cluster = new MiniDFSCluster.Builder(CONF)
-        .nnTopology(MiniDFSNNTopology.simpleHATopology()).numDataNodes(1)
+        .nnTopology(MiniDFSNNTopology.simpleHATopology()).numDataNodes(0)
         .waitSafeMode(false).build();
     cluster.waitActive();
     cluster.transitionToActive(0);
@@ -73,7 +73,7 @@ public class TestNNStartupWhenViewFSOverloadSchemeEnabled {
   @Test(timeout = 30000)
   public void testNameNodeAndDataNodeStartup() throws Exception {
     cluster =
-        new MiniDFSCluster.Builder(CONF).numDataNodes(1).waitSafeMode(false)
+        new MiniDFSCluster.Builder(CONF).numDataNodes(0).waitSafeMode(false)
             .build();
     cluster.waitActive();
   }