HBASE-19549 Change path comparison in CommonFSUtils

Also change makeQualified(FileSystem fs)
to makeQualified(URI defaultUri, Path workingDir)

Signed-off-by: Michael Stack <stack@apache.org>
This commit is contained in:
Peter Somogyi 2017-12-18 13:39:25 +01:00 committed by Michael Stack
parent 495bedea35
commit dbf0d427e2
No known key found for this signature in database
GPG Key ID: 9816C7FC8ACC93D2
2 changed files with 7 additions and 5 deletions

View File

@ -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.");
}

View File

@ -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());
}
/**