Yiqun Zhang created ORC-1035:
--------------------------------
Summary: `backupDataPath` may be incorrect in recoverFile
Key: ORC-1035
URL: https://issues.apache.org/jira/browse/ORC-1035
Project: ORC
Issue Type: Bug
Components: Java, tools
Affects Versions: 1.6.11, 1.7.0, 1.8.0
Reporter: Yiqun Zhang
{code:java}
public static final String DEFAULT_BACKUP_PATH =
System.getProperty("java.io.tmpdir");
......
String scheme = corruptPath.toUri().getScheme();
String authority = corruptPath.toUri().getAuthority();
String filePath = corruptPath.toUri().getPath();
if (backup.equals(DEFAULT_BACKUP_PATH)) {
backupDataPath = new Path(scheme, authority, DEFAULT_BACKUP_PATH +
filePath);
} else {
backupDataPath = Path.mergePaths(new Path(backup), corruptPath);
}
{code}
1. System.getProperty("java.io.tmpdir") gets a path that may or may not end in
Path.SEPARATOR, as seen in the [Travis
ci|https://app.travis-ci.com/github/apache/orc/jobs/544381649#L1580] example,
the path generated directly by DEFAULT_BACKUP_PATH + filePath may not be
correct.
2. corruptPath is the path entered by the user, which may be absolute or
relative. The second argument of Path.mergePaths is expected to be a path
starting with Path.SEPARATOR, so when the user enters a relative path,
Path.mergePaths(new Path(backup), corruptPath) the result is also incorrect.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)