[ 
https://issues.apache.org/jira/browse/SPARK-4091?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Cheng Lian updated SPARK-4091:
------------------------------
    Description: 
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}}.

  was:
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}}.


> 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

Reply via email to