diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Path.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Path.java index f70ff01e4a..f4dec29a64 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Path.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Path.java @@ -465,7 +465,12 @@ private Path getParentUtil() { * @return a new path with the suffix added */ public Path suffix(String suffix) { - return new Path(getParent(), getName()+suffix); + Path parent = getParent(); + if (parent == null) { + return new Path("/", getName() + suffix); + } + + return new Path(parent, getName() + suffix); } @Override diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestPath.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestPath.java index 18f88084c3..e775d1d069 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestPath.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestPath.java @@ -528,4 +528,11 @@ public void testSerDeser() throws Throwable { } } + + @Test(timeout = 30000) + public void testSuffixFromRoot() { + Path root = new Path("/"); + Assert.assertNull(root.getParent()); + Assert.assertEquals(new Path("/bar"), root.suffix("bar")); + } }