Cheng Lian created SPARK-4091: --------------------------------- Summary: Occasionally spark.local.dir can be deleted twice and causes test failure Key: SPARK-4091 URL: https://issues.apache.org/jira/browse/SPARK-4091 Project: Spark Issue Type: Bug Components: Spark Core Affects Versions: 1.1.0 Reporter: Cheng Lian
By persisting an arbitrary RDD with storage level {{MEMORY_AND_DISK}}, Spark may occasionally throw the following exception when shutting down: {code} java.io.IOException: Failed to list files for dir: /var/folders/kh/r9ylmzln40n9nrlchnsry2qw0000gn/T/spark-local-20141027005012-5bcd/0b at org.apache.spark.util.Utils$.listFilesSafely(Utils.scala:664) at org.apache.spark.util.Utils$.deleteRecursively(Utils.scala:678) at org.apache.spark.util.Utils$$anonfun$deleteRecursively$1.apply(Utils.scala:680) at org.apache.spark.util.Utils$$anonfun$deleteRecursively$1.apply(Utils.scala:678) at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:34) at org.apache.spark.util.Utils$.deleteRecursively(Utils.scala:678) at org.apache.spark.util.Utils$$anon$4$$anonfun$run$1$$anonfun$apply$mcV$sp$2.apply(Utils.scala:177) at org.apache.spark.util.Utils$$anon$4$$anonfun$run$1$$anonfun$apply$mcV$sp$2.apply(Utils.scala:175) at scala.collection.mutable.HashSet.foreach(HashSet.scala:79) at org.apache.spark.util.Utils$$anon$4$$anonfun$run$1.apply$mcV$sp(Utils.scala:175) at org.apache.spark.util.Utils$$anon$4$$anonfun$run$1.apply(Utils.scala:173) at org.apache.spark.util.Utils$$anon$4$$anonfun$run$1.apply(Utils.scala:173) at org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1323) at org.apache.spark.util.Utils$$anon$4.run(Utils.scala:173) {code} By adding log output to {{Utils.deleteRecursively}}, setting breakpoints at {{File.delete}} in IntelliJ, and asking IntelliJ to evaluate and log {{Thread.currentThread().getStackTrace()}} when the breakpoint is hit rather than suspend execution, we can get the following result, which shows {{spark.local.dir}} is deleted twice from both {{DiskBlockManager.stop}} and the shutdown hook installed in {{Utils}}: {code} +++ Deleting file: /var/folders/kh/r9ylmzln40n9nrlchnsry2qw0000gn/T/spark-local-20141027003412-7fae/1d Breakpoint reached at java.io.File.delete(File.java:1028) [java.lang.Thread.getStackTrace(Thread.java:1589) java.io.File.delete(File.java:1028) org.apache.spark.util.Utils$.deleteRecursively(Utils.scala:695) org.apache.spark.util.Utils$$anon$4$$anonfun$run$1$$anonfun$apply$mcV$sp$2.apply(Utils.scala:177) org.apache.spark.util.Utils$$anon$4$$anonfun$run$1$$anonfun$apply$mcV$sp$2.apply(Utils.scala:175) scala.collection.mutable.HashSet.foreach(HashSet.scala:79) org.apache.spark.util.Utils$$anon$4$$anonfun$run$1.apply$mcV$sp(Utils.scala:175) org.apache.spark.util.Utils$$anon$4$$anonfun$run$1.apply(Utils.scala:173) org.apache.spark.util.Utils$$anon$4$$anonfun$run$1.apply(Utils.scala:173) org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1323) org.apache.spark.util.Utils$$anon$4.run(Utils.scala:173)] +++ Deleting file: /var/folders/kh/r9ylmzln40n9nrlchnsry2qw0000gn/T/spark-local-20141027003412-7fae/1d Breakpoint reached at java.io.File.delete(File.java:1028) [java.lang.Thread.getStackTrace(Thread.java:1589) java.io.File.delete(File.java:1028) org.apache.spark.util.Utils$.deleteRecursively(Utils.scala:695) org.apache.spark.util.Utils$$anonfun$deleteRecursively$1.apply(Utils.scala:680) org.apache.spark.util.Utils$$anonfun$deleteRecursively$1.apply(Utils.scala:678) scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:34) org.apache.spark.util.Utils$.deleteRecursively(Utils.scala:678) org.apache.spark.storage.DiskBlockManager$$anonfun$stop$1.apply(DiskBlockManager.scala:157) org.apache.spark.storage.DiskBlockManager$$anonfun$stop$1.apply(DiskBlockManager.scala:154) scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108) org.apache.spark.storage.DiskBlockManager.stop(DiskBlockManager.scala:154) org.apache.spark.storage.DiskBlockManager$$anon$1$$anonfun$run$1.apply$mcV$sp(DiskBlockManager.scala:147) org.apache.spark.storage.DiskBlockManager$$anon$1$$anonfun$run$1.apply(DiskBlockManager.scala:145) org.apache.spark.storage.DiskBlockManager$$anon$1$$anonfun$run$1.apply(DiskBlockManager.scala:145) org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1323) org.apache.spark.storage.DiskBlockManager$$anon$1.run(DiskBlockManager.scala:145)] {code} When this bug happens during Jenkins build, it fails {{CliSuite}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org