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());