Repository: hadoop Updated Branches: refs/heads/branch-3.1 595ce9457 -> 7442b7941
HDFS-13868. WebHDFS: GETSNAPSHOTDIFF API NPE when param "snapshotname" is given but "oldsnapshotname" is not. Contributed by Pranay Singh. (cherry picked from commit 28ceb34a725cd06d28fb51361c49bb45464f5368) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7442b794 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7442b794 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7442b794 Branch: refs/heads/branch-3.1 Commit: 7442b7941dc57ebf4bd0ded4d46cfbf5af6fea81 Parents: 595ce94 Author: Wei-Chiu Chuang <[email protected]> Authored: Wed Sep 19 03:11:29 2018 -0700 Committer: Wei-Chiu Chuang <[email protected]> Committed: Wed Sep 19 03:12:55 2018 -0700 ---------------------------------------------------------------------- .../src/main/java/org/apache/hadoop/hdfs/DFSClient.java | 4 ++++ .../namenode/snapshot/DirectorySnapshottableFeature.java | 2 +- .../hdfs/server/namenode/snapshot/TestSnapshotDiffReport.java | 6 ++++++ .../src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFS.java | 6 ++++++ 4 files changed, 17 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/7442b794/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java index 2f00693..106ef28 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java @@ -2153,6 +2153,10 @@ public class DFSClient implements java.io.Closeable, RemotePeerFactory, String fromSnapshot, String toSnapshot) throws IOException { checkOpen(); try (TraceScope ignored = tracer.newScope("getSnapshotDiffReport")) { + Preconditions.checkArgument(fromSnapshot != null, + "null fromSnapshot"); + Preconditions.checkArgument(toSnapshot != null, + "null toSnapshot"); return namenode .getSnapshotDiffReport(snapshotDir, fromSnapshot, toSnapshot); } catch (RemoteException re) { http://git-wip-us.apache.org/repos/asf/hadoop/blob/7442b794/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/DirectorySnapshottableFeature.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/DirectorySnapshottableFeature.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/DirectorySnapshottableFeature.java index d3083cf..15aa22a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/DirectorySnapshottableFeature.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/DirectorySnapshottableFeature.java @@ -277,7 +277,7 @@ public class DirectorySnapshottableFeature extends DirectoryWithSnapshotFeature Snapshot fromSnapshot = getSnapshotByName(snapshotRootDir, from); Snapshot toSnapshot = getSnapshotByName(snapshotRootDir, to); // if the start point is equal to the end point, return null - if (from.equals(to)) { + if (from != null && from.equals(to)) { return null; } SnapshotDiffInfo diffs = new SnapshotDiffInfo(snapshotRootDir, http://git-wip-us.apache.org/repos/asf/hadoop/blob/7442b794/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotDiffReport.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotDiffReport.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotDiffReport.java index 4625988..18ec3c5 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotDiffReport.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotDiffReport.java @@ -230,6 +230,12 @@ public class TestSnapshotDiffReport { LOG.info(report.toString()); assertEquals(0, report.getDiffList().size()); + try { + report = hdfs.getSnapshotDiffReport(subsubsub1, null, "s2"); + fail("Expect exception when providing null fromSnapshot "); + } catch (IllegalArgumentException e) { + GenericTestUtils.assertExceptionContains("null fromSnapshot", e); + } report = hdfs.getSnapshotDiffReport(subsubsub1, "s0", "s2"); LOG.info(report.toString()); assertEquals(0, report.getDiffList().size()); http://git-wip-us.apache.org/repos/asf/hadoop/blob/7442b794/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFS.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFS.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFS.java index a7ae90c..d27646e 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFS.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFS.java @@ -743,6 +743,12 @@ public class TestWebHDFS { Assert.assertTrue(diffReport.getDiffList().contains(entry3)); Assert.assertTrue(diffReport.getDiffList().contains(entry4)); Assert.assertEquals(diffReport.getDiffList().size(), 5); + + // Test with fromSnapshot and toSnapshot as null. + diffReport = webHdfs.getSnapshotDiffReport(foo, null, "s2"); + Assert.assertEquals(diffReport.getDiffList().size(), 0); + diffReport = webHdfs.getSnapshotDiffReport(foo, "s1", null); + Assert.assertEquals(diffReport.getDiffList().size(), 5); } finally { if (cluster != null) { cluster.shutdown(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
