HDFS-12325. SFTPFileSystem operations should restore cwd. Contributed by Chen Liang.
This commit is contained in:
parent
913760cb4f
commit
736ceab2f5
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user