From abae90787fdf2a207ebacae3223eee21cf3f7659 Mon Sep 17 00:00:00 2001 From: Peter Somogyi Date: Mon, 18 Dec 2017 13:39:25 +0100 Subject: [PATCH] HBASE-19549 Change path comparison in CommonFSUtils Also change makeQualified(FileSystem fs) to makeQualified(URI defaultUri, Path workingDir) Signed-off-by: Michael Stack --- .../org/apache/hadoop/hbase/util/CommonFSUtils.java | 10 ++++++---- .../hadoop/hbase/mapreduce/TableMapReduceUtil.java | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CommonFSUtils.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CommonFSUtils.java index eba3b12abc8..0e0372c94ea 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CommonFSUtils.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CommonFSUtils.java @@ -356,7 +356,7 @@ public abstract class CommonFSUtils { public static Path getRootDir(final Configuration c) throws IOException { Path p = new Path(c.get(HConstants.HBASE_DIR)); FileSystem fs = p.getFileSystem(c); - return p.makeQualified(fs); + return p.makeQualified(fs.getUri(), fs.getWorkingDirectory()); } public static void setRootDir(final Configuration c, final Path root) throws IOException { @@ -384,7 +384,7 @@ public abstract class CommonFSUtils { return getRootDir(c); } FileSystem fs = p.getFileSystem(c); - return p.makeQualified(fs); + return p.makeQualified(fs.getUri(), fs.getWorkingDirectory()); } @VisibleForTesting @@ -399,8 +399,10 @@ public abstract class CommonFSUtils { private static boolean isValidWALRootDir(Path walDir, final Configuration c) throws IOException { Path rootDir = getRootDir(c); - if (!walDir.equals(rootDir)) { - if (walDir.toString().startsWith(rootDir.toString() + "/")) { + FileSystem fs = walDir.getFileSystem(c); + Path qualifiedWalDir = walDir.makeQualified(fs.getUri(), fs.getWorkingDirectory()); + if (!qualifiedWalDir.equals(rootDir)) { + if (qualifiedWalDir.toString().startsWith(rootDir.toString() + "/")) { throw new IllegalStateException("Illegal WAL directory specified. " + "WAL directories are not permitted to be under the root directory if set."); } diff --git a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.java b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.java index c37f2840496..dc3bb61a64e 100644 --- a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.java +++ b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.java @@ -965,7 +965,7 @@ public class TableMapReduceUtil { } LOG.debug(String.format("For class %s, using jar %s", my_class.getName(), jar)); - return new Path(jar).makeQualified(fs); + return new Path(jar).makeQualified(fs.getUri(), fs.getWorkingDirectory()); } /**