This is an automated email from the ASF dual-hosted git repository.

surendralilhore pushed a commit to branch branch-3.1
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/branch-3.1 by this push:
     new 8551c04  HDFS-14940. HDFS Balancer : Do not allow to set balancer 
maximum network bandwidth more than 1TB. Contributed by  hemanthboyina.
8551c04 is described below

commit 8551c04726cae82de78e559590becd3746aac1d4
Author: Surendra Singh Lilhore <surendralilh...@apache.org>
AuthorDate: Fri Nov 22 00:31:25 2019 +0530

    HDFS-14940. HDFS Balancer : Do not allow to set balancer maximum network 
bandwidth more than 1TB. Contributed by  hemanthboyina.
---
 .../org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java | 2 ++
 .../org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java | 6 ++++++
 .../test/java/org/apache/hadoop/hdfs/TestBalancerBandwidth.java   | 8 ++++++++
 3 files changed, 16 insertions(+)

diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java
index 7434347..6522137 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java
@@ -368,4 +368,6 @@ public interface HdfsServerConstants {
 
   long BLOCK_GROUP_INDEX_MASK = 15;
   byte MAX_BLOCKS_IN_GROUP = 16;
+  // maximum bandwidth per datanode 1TB/sec.
+  long MAX_BANDWIDTH_PER_DATANODE = 1099511627776L;
 }
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java
index d7f4f85..a51fde6 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java
@@ -1430,6 +1430,12 @@ public class NameNodeRpcServer implements 
NamenodeProtocols {
    */
   @Override // ClientProtocol
   public void setBalancerBandwidth(long bandwidth) throws IOException {
+    if (bandwidth > HdfsServerConstants.MAX_BANDWIDTH_PER_DATANODE) {
+      throw new IllegalArgumentException(
+          "Bandwidth should not exceed maximum limit "
+              + HdfsServerConstants.MAX_BANDWIDTH_PER_DATANODE
+              + " bytes per second");
+    }
     checkNNStartup();
     namesystem.setBalancerBandwidth(bandwidth);
   }
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestBalancerBandwidth.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestBalancerBandwidth.java
index 6bbe3a1..9eb3d9f 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestBalancerBandwidth.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestBalancerBandwidth.java
@@ -33,6 +33,7 @@ import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hdfs.server.datanode.DataNode;
 import org.apache.hadoop.hdfs.tools.DFSAdmin;
 import org.apache.hadoop.test.GenericTestUtils;
+import org.apache.hadoop.util.ToolRunner;
 import org.junit.Test;
 
 /**
@@ -101,6 +102,13 @@ public class TestBalancerBandwidth {
       runGetBalancerBandwidthCmd(admin, args, newBandwidth);
       args = new String[] { "-getBalancerBandwidth", dn2Address };
       runGetBalancerBandwidthCmd(admin, args, newBandwidth);
+
+      // test maximum bandwidth allowed
+      assertEquals(0, ToolRunner.run(admin,
+          new String[] {"-setBalancerBandwidth", "1t"}));
+
+      assertEquals(-1, ToolRunner.run(admin,
+          new String[] {"-setBalancerBandwidth", "1e"}));
     }
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to