HADOOP-15940. ABFS: For HNS account, avoid unnecessary get call when doing Rename.
Contributed by Da Zhou <da.zhou@microsoft.com> (cherry picked from commit 1a3a4960d91aa594283e447963fb2e407d4c6af5)
This commit is contained in:
parent
96c104d365
commit
300f772c36
@ -271,22 +271,44 @@ public boolean rename(final Path src, final Path dst) throws IOException {
|
||||
if (parentFolder == null) {
|
||||
return false;
|
||||
}
|
||||
Path qualifiedSrcPath = makeQualified(src);
|
||||
Path qualifiedDstPath = makeQualified(dst);
|
||||
|
||||
// rename under same folder;
|
||||
if(makeQualified(parentFolder).equals(qualifiedDstPath)) {
|
||||
return tryGetFileStatus(qualifiedSrcPath) != null;
|
||||
}
|
||||
|
||||
FileStatus dstFileStatus = null;
|
||||
if (qualifiedSrcPath.equals(qualifiedDstPath)) {
|
||||
// rename to itself
|
||||
// - if it doesn't exist, return false
|
||||
// - if it is file, return true
|
||||
// - if it is dir, return false.
|
||||
dstFileStatus = tryGetFileStatus(qualifiedDstPath);
|
||||
if (dstFileStatus == null) {
|
||||
return false;
|
||||
}
|
||||
return dstFileStatus.isDirectory() ? false : true;
|
||||
}
|
||||
|
||||
// Non-HNS account need to check dst status on driver side.
|
||||
if (!abfsStore.getIsNamespaceEnabled() && dstFileStatus == null) {
|
||||
dstFileStatus = tryGetFileStatus(qualifiedDstPath);
|
||||
}
|
||||
|
||||
final FileStatus dstFileStatus = tryGetFileStatus(dst);
|
||||
try {
|
||||
String sourceFileName = src.getName();
|
||||
Path adjustedDst = dst;
|
||||
|
||||
if (dstFileStatus != null) {
|
||||
if (!dstFileStatus.isDirectory()) {
|
||||
return src.equals(dst);
|
||||
return qualifiedSrcPath.equals(qualifiedDstPath);
|
||||
}
|
||||
|
||||
adjustedDst = new Path(dst, sourceFileName);
|
||||
}
|
||||
|
||||
Path qualifiedSrcPath = makeQualified(src);
|
||||
Path qualifiedDstPath = makeQualified(adjustedDst);
|
||||
qualifiedDstPath = makeQualified(adjustedDst);
|
||||
performAbfsAuthCheck(FsAction.READ_WRITE, qualifiedSrcPath, qualifiedDstPath);
|
||||
|
||||
abfsStore.rename(qualifiedSrcPath, qualifiedDstPath);
|
||||
|
Loading…
Reference in New Issue
Block a user