diff options
author | Evan Chan <ev@ooyala.com> | 2013-09-09 12:58:12 -0700 |
---|---|---|
committer | Evan Chan <ev@ooyala.com> | 2013-09-09 12:58:12 -0700 |
commit | 27726079e4e6931c071de77e91f991cb1b249d02 (patch) | |
tree | 8eb7a61ecb76e707d448cefa5b50a7babca7eeb9 | |
parent | 1e15feb5a314e7180328b9208054966e040eb2ad (diff) | |
download | spark-27726079e4e6931c071de77e91f991cb1b249d02.tar.gz spark-27726079e4e6931c071de77e91f991cb1b249d02.tar.bz2 spark-27726079e4e6931c071de77e91f991cb1b249d02.zip |
Print out more friendly error if listFiles() fails
listFiles() could return null if the I/O fails, and this currently results in an ugly NPE which is hard to diagnose.
-rw-r--r-- | core/src/main/scala/org/apache/spark/util/Utils.scala | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/core/src/main/scala/org/apache/spark/util/Utils.scala b/core/src/main/scala/org/apache/spark/util/Utils.scala index 468800b2bd..a95eae9c69 100644 --- a/core/src/main/scala/org/apache/spark/util/Utils.scala +++ b/core/src/main/scala/org/apache/spark/util/Utils.scala @@ -457,12 +457,18 @@ private[spark] object Utils extends Logging { def newDaemonFixedThreadPool(nThreads: Int): ThreadPoolExecutor = Executors.newFixedThreadPool(nThreads, daemonThreadFactory).asInstanceOf[ThreadPoolExecutor] + private def listFilesSafely(file: File): Seq[File] = { + val files = file.listFiles() + if (files == null) throw new IOException("Failed to list files for dir: " + file) + files + } + /** * Delete a file or directory and its contents recursively. */ def deleteRecursively(file: File) { if (file.isDirectory) { - for (child <- file.listFiles()) { + for (child <- listFilesSafely(file)) { deleteRecursively(child) } } |