HDFS-7818. OffsetParam should return the default value instead of throwing NPE when the value is unspecified. Contributed by Eric Payne.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/fcae1207 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/fcae1207 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/fcae1207 Branch: refs/heads/HDFS-7285 Commit: fcae12071f5b77efdbf1251113f7483f3a694a8d Parents: 1752b65 Author: Haohui Mai <[email protected]> Authored: Fri Mar 6 14:26:23 2015 -0800 Committer: Jing Zhao <[email protected]> Committed: Mon Mar 9 13:11:26 2015 -0700 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../datanode/web/webhdfs/ParameterParser.java | 2 +- .../hadoop/hdfs/web/resources/OffsetParam.java | 5 +++++ .../web/webhdfs/TestParameterParser.java | 19 +++++++++++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/fcae1207/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index e622a57..b443902 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -1107,6 +1107,9 @@ Release 2.7.0 - UNRELEASED HDFS-7885. Datanode should not trust the generation stamp provided by client. (Tsz Wo Nicholas Sze via jing9) + HDFS-7818. OffsetParam should return the default value instead of throwing + NPE when the value is unspecified. (Eric Payne via wheat9) + BREAKDOWN OF HDFS-7584 SUBTASKS AND RELATED JIRAS HDFS-7720. Quota by Storage Type API, tools and ClientNameNode http://git-wip-us.apache.org/repos/asf/hadoop/blob/fcae1207/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/ParameterParser.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/ParameterParser.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/ParameterParser.java index 5749504..2baafe8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/ParameterParser.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/ParameterParser.java @@ -62,7 +62,7 @@ class ParameterParser { } long offset() { - return new OffsetParam(param(OffsetParam.NAME)).getValue(); + return new OffsetParam(param(OffsetParam.NAME)).getOffset(); } String namenodeId() { http://git-wip-us.apache.org/repos/asf/hadoop/blob/fcae1207/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/resources/OffsetParam.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/resources/OffsetParam.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/resources/OffsetParam.java index 6973787..6d88703 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/resources/OffsetParam.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/resources/OffsetParam.java @@ -46,4 +46,9 @@ public class OffsetParam extends LongParam { public String getName() { return NAME; } + + public Long getOffset() { + Long offset = getValue(); + return (offset == null) ? Long.valueOf(0) : offset; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hadoop/blob/fcae1207/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/TestParameterParser.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/TestParameterParser.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/TestParameterParser.java index 6a6c5d0..8aee1d8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/TestParameterParser.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/TestParameterParser.java @@ -23,6 +23,7 @@ import org.apache.hadoop.hdfs.HAUtil; import org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier; import org.apache.hadoop.hdfs.web.resources.DelegationParam; import org.apache.hadoop.hdfs.web.resources.NamenodeAddressParam; +import org.apache.hadoop.hdfs.web.resources.OffsetParam; import org.apache.hadoop.security.token.Token; import org.junit.Assert; import org.junit.Test; @@ -65,4 +66,22 @@ public class TestParameterParser { ParameterParser testParser = new ParameterParser(decoder, conf); Assert.assertEquals(EXPECTED_PATH, testParser.path()); } + + @Test + public void testOffset() throws IOException { + final long X = 42; + + long offset = new OffsetParam(Long.toString(X)).getOffset(); + Assert.assertEquals("OffsetParam: ", X, offset); + + offset = new OffsetParam((String) null).getOffset(); + Assert.assertEquals("OffsetParam with null should have defaulted to 0", 0, offset); + + try { + offset = new OffsetParam("abc").getValue(); + Assert.fail("OffsetParam with nondigit value should have thrown IllegalArgumentException"); + } catch (IllegalArgumentException iae) { + // Ignore + } + } }
