Browse Source

HDFS-3819. Should check whether invalidate work percentage default value is not greater than 1.0f. Contributed by Jing Zhao.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1@1376191 13f79535-47bb-0310-9956-ffa450edef68
Jitendra Nath Pandey 13 years ago
parent
commit
ec075475a4

+ 3 - 0
CHANGES.txt

@@ -87,6 +87,9 @@ Release 1.2.0 - unreleased
     MAPREDUCE-4565. Backport MR-2855 to branch-1: ResourceBundle lookup during
     counter name resolution takes a lot of time. (Karthik Kambatla via sseth)
 
+    HDFS-3819. Should check whether invalidate work percentage default value is 
+    not greater than 1.0f. (Jing Zhao via jitendra)
+
   OPTIMIZATIONS
 
     HDFS-2533. Backport: Remove needless synchronization on some FSDataSet

+ 1 - 1
src/hdfs/org/apache/hadoop/hdfs/DFSUtil.java

@@ -136,7 +136,7 @@ public class DFSUtil {
     float blocksInvalidateWorkPct = conf.getFloat(
         DFSConfigKeys.DFS_NAMENODE_INVALIDATE_WORK_PCT_PER_ITERATION,
         DFSConfigKeys.DFS_NAMENODE_INVALIDATE_WORK_PCT_PER_ITERATION_DEFAULT);
-    if (blocksInvalidateWorkPct <= 0) {
+    if (blocksInvalidateWorkPct <= 0.0f || blocksInvalidateWorkPct > 1.0f) {
       throw new IllegalArgumentException(
           DFSConfigKeys.DFS_NAMENODE_INVALIDATE_WORK_PCT_PER_ITERATION + " = '"
               + blocksInvalidateWorkPct + "' is invalid. "

+ 17 - 1
src/test/org/apache/hadoop/hdfs/server/namenode/TestReplicationPolicy.java

@@ -433,7 +433,23 @@ public class TestReplicationPolicy extends TestCase {
     float blocksInvalidateWorkPct = DFSUtil.getInvalidateWorkPctPerIteration(conf);
     assertTrue(blocksInvalidateWorkPct > 0);
     
-    conf.set(DFSConfigKeys.DFS_NAMENODE_INVALIDATE_WORK_PCT_PER_ITERATION, "0.0");
+    conf.set(DFSConfigKeys.DFS_NAMENODE_INVALIDATE_WORK_PCT_PER_ITERATION, "0.0f");
+    try {
+      blocksInvalidateWorkPct = DFSUtil.getInvalidateWorkPctPerIteration(conf);
+      fail("Should throw IllegalArgumentException.");
+    } catch (IllegalArgumentException e) {
+      // expected 
+    }
+    
+    conf.set(DFSConfigKeys.DFS_NAMENODE_INVALIDATE_WORK_PCT_PER_ITERATION, "1.5f");
+    try {
+      blocksInvalidateWorkPct = DFSUtil.getInvalidateWorkPctPerIteration(conf);
+      fail("Should throw IllegalArgumentException.");
+    } catch (IllegalArgumentException e) {
+      // expected 
+    }
+    
+    conf.set(DFSConfigKeys.DFS_NAMENODE_INVALIDATE_WORK_PCT_PER_ITERATION, "-0.5f");
     try {
       blocksInvalidateWorkPct = DFSUtil.getInvalidateWorkPctPerIteration(conf);
       fail("Should throw IllegalArgumentException.");