aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Chan <ev@ooyala.com>2013-09-09 12:58:12 -0700
committerEvan Chan <ev@ooyala.com>2013-09-09 12:58:12 -0700
commit27726079e4e6931c071de77e91f991cb1b249d02 (patch)
tree8eb7a61ecb76e707d448cefa5b50a7babca7eeb9
parent1e15feb5a314e7180328b9208054966e040eb2ad (diff)
downloadspark-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.scala8
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)
}
}