Browse Source

HDFS-14653. RBF: Correct the default value for dfs.federation.router.namenode.heartbeat.enable. Contributed by Ayush Saxena.

Takanobu Asanuma 6 years ago
parent
commit
9792f58662

+ 1 - 1
hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/resources/hdfs-rbf-default.xml

@@ -383,7 +383,7 @@
 
 
   <property>
   <property>
     <name>dfs.federation.router.namenode.heartbeat.enable</name>
     <name>dfs.federation.router.namenode.heartbeat.enable</name>
-    <value>true</value>
+    <value></value>
     <description>
     <description>
       If true, get namenode heartbeats and send into the State Store.
       If true, get namenode heartbeats and send into the State Store.
       If not explicitly specified takes the same value as for
       If not explicitly specified takes the same value as for

+ 28 - 0
hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouter.java

@@ -33,6 +33,7 @@ import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.CommonConfigurationKeys;
 import org.apache.hadoop.fs.CommonConfigurationKeys;
 import org.apache.hadoop.hdfs.DFSClient;
 import org.apache.hadoop.hdfs.DFSClient;
 import org.apache.hadoop.hdfs.DFSConfigKeys;
 import org.apache.hadoop.hdfs.DFSConfigKeys;
+import org.apache.hadoop.hdfs.HdfsConfiguration;
 import org.apache.hadoop.hdfs.protocol.HdfsConstants.DatanodeReportType;
 import org.apache.hadoop.hdfs.protocol.HdfsConstants.DatanodeReportType;
 import org.apache.hadoop.hdfs.server.federation.MockResolver;
 import org.apache.hadoop.hdfs.server.federation.MockResolver;
 import org.apache.hadoop.hdfs.server.federation.RouterConfigBuilder;
 import org.apache.hadoop.hdfs.server.federation.RouterConfigBuilder;
@@ -260,4 +261,31 @@ public class TestRouter {
     router.close();
     router.close();
   }
   }
 
 
+  @Test
+  public void testNamenodeHeartBeatEnableDefault() throws IOException {
+    checkNamenodeHeartBeatEnableDefault(true);
+    checkNamenodeHeartBeatEnableDefault(false);
+  }
+
+  /**
+   * Check the default value of dfs.federation.router.namenode.heartbeat.enable
+   * when it isn't explicitly defined.
+   * @param enable value for dfs.federation.router.heartbeat.enable.
+   */
+  private void checkNamenodeHeartBeatEnableDefault(boolean enable)
+      throws IOException {
+    final Router router = new Router();
+    try {
+      Configuration config = new HdfsConfiguration();
+      config.setBoolean(RBFConfigKeys.DFS_ROUTER_HEARTBEAT_ENABLE, enable);
+      router.init(config);
+      if (enable) {
+        assertNotNull(router.getNamenodeHeartbeatServices());
+      } else {
+        assertNull(router.getNamenodeHeartbeatServices());
+      }
+    } finally {
+      router.close();
+    }
+  }
 }
 }