You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by fh...@apache.org on 2015/05/27 00:40:09 UTC
[2/2] flink git commit: [FLINK-1848] Fix for file paths with Windows
drive letters
[FLINK-1848] Fix for file paths with Windows drive letters
This closes #712
Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/7164b2b6
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/7164b2b6
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/7164b2b6
Branch: refs/heads/master
Commit: 7164b2b643985b99c6688b62174de42a71deb71b
Parents: 21207fd
Author: Fabian Hueske <fh...@apache.org>
Authored: Thu May 21 22:24:12 2015 +0200
Committer: Fabian Hueske <fh...@apache.org>
Committed: Wed May 27 00:39:08 2015 +0200
----------------------------------------------------------------------
.../src/main/java/org/apache/flink/core/fs/Path.java | 6 +++++-
.../org/apache/flink/core/fs/local/LocalFileSystem.java | 7 ++++++-
.../test/java/org/apache/flink/core/fs/PathTest.java | 12 ++++++++++++
3 files changed, 23 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flink/blob/7164b2b6/flink-core/src/main/java/org/apache/flink/core/fs/Path.java
----------------------------------------------------------------------
diff --git a/flink-core/src/main/java/org/apache/flink/core/fs/Path.java b/flink-core/src/main/java/org/apache/flink/core/fs/Path.java
index 75155eb..c47bc0d 100644
--- a/flink-core/src/main/java/org/apache/flink/core/fs/Path.java
+++ b/flink-core/src/main/java/org/apache/flink/core/fs/Path.java
@@ -260,7 +260,11 @@ public class Path implements IOReadableWritable, Serializable {
path = path.replaceAll("/+", "/");
// remove tailing separator
- if(!path.equals(SEPARATOR) && path.endsWith(SEPARATOR)) {
+ if(!path.equals(SEPARATOR) && // UNIX root path
+ !path.matches("/\\p{Alpha}+:/") && // Windows root path
+ path.endsWith(SEPARATOR))
+ {
+ // remove tailing slash
path = path.substring(0, path.length() - SEPARATOR.length());
}
http://git-wip-us.apache.org/repos/asf/flink/blob/7164b2b6/flink-core/src/main/java/org/apache/flink/core/fs/local/LocalFileSystem.java
----------------------------------------------------------------------
diff --git a/flink-core/src/main/java/org/apache/flink/core/fs/local/LocalFileSystem.java b/flink-core/src/main/java/org/apache/flink/core/fs/local/LocalFileSystem.java
index 2313a41..9dd9e30 100644
--- a/flink-core/src/main/java/org/apache/flink/core/fs/local/LocalFileSystem.java
+++ b/flink-core/src/main/java/org/apache/flink/core/fs/local/LocalFileSystem.java
@@ -228,8 +228,13 @@ public class LocalFileSystem extends FileSystem {
*/
public boolean mkdirs(final Path f) throws IOException {
- final Path parent = f.getParent();
final File p2f = pathToFile(f);
+
+ if(p2f.isDirectory()) {
+ return true;
+ }
+
+ final Path parent = f.getParent();
return (parent == null || mkdirs(parent)) && (p2f.mkdir() || p2f.isDirectory());
}
http://git-wip-us.apache.org/repos/asf/flink/blob/7164b2b6/flink-core/src/test/java/org/apache/flink/core/fs/PathTest.java
----------------------------------------------------------------------
diff --git a/flink-core/src/test/java/org/apache/flink/core/fs/PathTest.java b/flink-core/src/test/java/org/apache/flink/core/fs/PathTest.java
index 8fa2cea..66816ad 100644
--- a/flink-core/src/test/java/org/apache/flink/core/fs/PathTest.java
+++ b/flink-core/src/test/java/org/apache/flink/core/fs/PathTest.java
@@ -117,12 +117,24 @@ public class PathTest {
p = new Path("y:/my/abs/windows/path");
assertTrue(p.isAbsolute());
+ p = new Path("/y:/my/abs/windows/path");
+ assertTrue(p.isAbsolute());
+
p = new Path("b:\\my\\abs\\windows\\path");
assertTrue(p.isAbsolute());
+ p = new Path("/c:/my/dir");
+ assertTrue(p.isAbsolute());
+
+ p = new Path("/C:/");
+ assertTrue(p.isAbsolute());
+
p = new Path("C:");
assertFalse(p.isAbsolute());
+ p = new Path("C:/");
+ assertTrue(p.isAbsolute());
+
p = new Path("C:my\\relative\\path");
assertFalse(p.isAbsolute());