[FLINK-5147] Prevent NPE in LocalFS#delete()

This closes #2859.


Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/47db9cb1
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/47db9cb1
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/47db9cb1

Branch: refs/heads/master
Commit: 47db9cb1a867870a8da0b403e0ec217ac461ba04
Parents: dc5dd51
Author: zentol <[email protected]>
Authored: Wed Nov 23 15:37:06 2016 +0100
Committer: zentol <[email protected]>
Committed: Mon Dec 12 12:45:51 2016 +0100

----------------------------------------------------------------------
 .../org/apache/flink/core/fs/local/LocalFileSystem.java     | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/47db9cb1/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 3aaa85f..7ad68b3 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
@@ -184,8 +184,13 @@ public class LocalFileSystem extends FileSystem {
                final File file = pathToFile(f);
                if (file.isFile()) {
                        return file.delete();
-               } else if ((!recursive) && file.isDirectory() && 
(file.listFiles().length != 0)) {
-                       throw new IOException("Directory " + file.toString() + 
" is not empty");
+               } else if ((!recursive) && file.isDirectory()) {
+                       File[] containedFiles = file.listFiles();
+                       if (containedFiles == null) {
+                               throw new IOException("Directory " + 
file.toString() + " does not exist or an I/O error occurred");
+                       } else if (containedFiles.length != 0) {
+                               throw new IOException("Directory " + 
file.toString() + " is not empty");
+                       }
                }
 
                return delete(file);

Reply via email to