From 10d0f44fced142a37804d76a31bcde9fc4ad343f 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) --- .../main/java/org/apache/hadoop/hbase/util/CommonFSUtils.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 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 eba3b12abc..0e0372c94e 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."); } -- 2.15.1