HDFS-12325. SFTPFileSystem operations should restore cwd. Contributed by Chen Liang.

This commit is contained in:
Arpit Agarwal 2017-08-20 23:41:06 -07:00
parent 913760cb4f
commit 736ceab2f5

View File

@ -326,8 +326,10 @@ private boolean mkdirs(ChannelSftp client, Path file, FsPermission permission)
String parentDir = parent.toUri().getPath();
boolean succeeded = true;
try {
final String previousCwd = client.pwd();
client.cd(parentDir);
client.mkdir(pathName);
client.cd(previousCwd);
} catch (SftpException e) {
throw new IOException(String.format(E_MAKE_DIR_FORPATH, pathName,
parentDir));
@ -474,8 +476,10 @@ private boolean rename(ChannelSftp channel, Path src, Path dst)
}
boolean renamed = true;
try {
final String previousCwd = channel.pwd();
channel.cd("/");
channel.rename(src.toUri().getPath(), dst.toUri().getPath());
channel.cd(previousCwd);
} catch (SftpException e) {
renamed = false;
}
@ -558,8 +562,10 @@ public FSDataOutputStream create(Path f, FsPermission permission,
}
OutputStream os;
try {
final String previousCwd = client.pwd();
client.cd(parent.toUri().getPath());
os = client.put(f.getName());
client.cd(previousCwd);
} catch (SftpException e) {
throw new IOException(e);
}