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

Yang Jie updated SPARK-45972:
-----------------------------
    Description: 
There are two test cases, ParquetFileFormatV1Suite and 
ParquetFileFormatV2Suite, that often fail in the daily tests of Java 21. The 
reason for the failure is 'There are ${n} possibly leaked file streams..'.

[https://github.com/apache/spark/actions/runs/6899686304/job/18771676570]

[https://github.com/apache/spark/actions/runs/6886143740/job/18731379673]

[https://github.com/apache/spark/actions/runs/6872747886/job/18691717269]

[https://github.com/apache/spark/actions/runs/6859020738/job/18650698085]

https://github.com/apache/spark/actions/runs/6845491908/job/18610786715

 
{code:java}
===== POSSIBLE THREAD LEAK IN SUITE 
o.a.s.sql.execution.datasources.parquet.ParquetFileFormatV1Suite, threads: 
readingParquetFooters-ForkJoinPool-7045-worker-3 (daemon=true), 
readingParquetFooters-ForkJoinPool-7045-worker-4 (daemon=true), 
shuffle-boss-2239-1 (daemon=true), rpc-boss-2236-1 (daemon=true) =====
30295
30296
30297[info] 
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatV1Suite *** 
ABORTED *** (11 seconds, 836 milliseconds)
30298[info]   The code passed to eventually never returned normally. Attempted 
15 times over 10.009598219999999 seconds. Last failure message: There are 2 
possibly leaked file streams.. (SharedSparkSession.scala:164)
30299[info]   org.scalatest.exceptions.TestFailedDueToTimeoutException:
30300[info]   at 
org.scalatest.enablers.Retrying$$anon$4.tryTryAgain$2(Retrying.scala:219)
30301[info]   at 
org.scalatest.enablers.Retrying$$anon$4.retry(Retrying.scala:226)
30302[info]   at 
org.scalatest.concurrent.Eventually.eventually(Eventually.scala:313)
30303[info]   at 
org.scalatest.concurrent.Eventually.eventually$(Eventually.scala:312)
30304[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatSuite.eventually(ParquetFileFormatSuite.scala:31)
30305[info]   at 
org.apache.spark.sql.test.SharedSparkSessionBase.afterEach(SharedSparkSession.scala:164)
30306[info]   at 
org.apache.spark.sql.test.SharedSparkSessionBase.afterEach$(SharedSparkSession.scala:158)
30307[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatSuite.afterEach(ParquetFileFormatSuite.scala:31)
30308[info]   at 
org.scalatest.BeforeAndAfterEach.$anonfun$runTest$1(BeforeAndAfterEach.scala:247)
30309[info]   at 
org.scalatest.Status.$anonfun$withAfterEffect$1(Status.scala:377)
30310[info]   at 
org.scalatest.Status.$anonfun$withAfterEffect$1$adapted(Status.scala:373)
30311[info]   at org.scalatest.SucceededStatus$.whenCompleted(Status.scala:462)
30312[info]   at org.scalatest.Status.withAfterEffect(Status.scala:373)
30313[info]   at org.scalatest.Status.withAfterEffect$(Status.scala:371)
30314[info]   at 
org.scalatest.SucceededStatus$.withAfterEffect(Status.scala:434)
30315[info]   at 
org.scalatest.BeforeAndAfterEach.runTest(BeforeAndAfterEach.scala:246)
30316[info]   at 
org.scalatest.BeforeAndAfterEach.runTest$(BeforeAndAfterEach.scala:227)
30317[info]   at org.apache.spark.SparkFunSuite.runTest(SparkFunSuite.scala:69)
30318[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$runTests$1(AnyFunSuiteLike.scala:269)
30319[info]   at 
org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
30320[info]   at scala.collection.immutable.List.foreach(List.scala:333)
30321[info]   at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
30322[info]   at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
30323[info]   at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
30324[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.runTests(AnyFunSuiteLike.scala:269)
30325[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.runTests$(AnyFunSuiteLike.scala:268)
30326[info]   at 
org.scalatest.funsuite.AnyFunSuite.runTests(AnyFunSuite.scala:1564)
30327[info]   at org.scalatest.Suite.run(Suite.scala:1114)
30328[info]   at org.scalatest.Suite.run$(Suite.scala:1096)
30329[info]   at 
org.scalatest.funsuite.AnyFunSuite.org$scalatest$funsuite$AnyFunSuiteLike$$super$run(AnyFunSuite.scala:1564)
30330[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$run$1(AnyFunSuiteLike.scala:273)
30331[info]   at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
30332[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.run(AnyFunSuiteLike.scala:273)
30333[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.run$(AnyFunSuiteLike.scala:272)
30334[info]   at 
org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterAll$$super$run(SparkFunSuite.scala:69)
30335[info]   at 
org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213)
30336[info]   at 
org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
30337[info]   at 
org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
30338[info]   at org.apache.spark.SparkFunSuite.run(SparkFunSuite.scala:69)
30339[info]   at 
org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
30340[info]   at 
org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
30341[info]   at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:414)
30342[info]   at 
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
30343[info]   at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
30344[info]   at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
30345[info]   at java.base/java.lang.Thread.run(Thread.java:1583)
30346[info]   Cause: java.lang.IllegalStateException: There are 2 possibly 
leaked file streams.
30347[info]   at 
org.apache.spark.DebugFilesystem$.assertNoOpenStreams(DebugFilesystem.scala:54)
30348[info]   at 
org.apache.spark.sql.test.SharedSparkSessionBase.$anonfun$afterEach$1(SharedSparkSession.scala:165)
30349[info]   at 
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
30350[info]   at 
org.scalatest.enablers.Retrying$$anon$4.makeAValiantAttempt$1(Retrying.scala:184)
30351[info]   at 
org.scalatest.enablers.Retrying$$anon$4.tryTryAgain$2(Retrying.scala:196)
30352[info]   at 
org.scalatest.enablers.Retrying$$anon$4.retry(Retrying.scala:226)
30353[info]   at 
org.scalatest.concurrent.Eventually.eventually(Eventually.scala:313)
30354[info]   at 
org.scalatest.concurrent.Eventually.eventually$(Eventually.scala:312)
30355[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatSuite.eventually(ParquetFileFormatSuite.scala:31)
30356[info]   at 
org.apache.spark.sql.test.SharedSparkSessionBase.afterEach(SharedSparkSession.scala:164)
30357[info]   at 
org.apache.spark.sql.test.SharedSparkSessionBase.afterEach$(SharedSparkSession.scala:158)
30358[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatSuite.afterEach(ParquetFileFormatSuite.scala:31)
30359[info]   at 
org.scalatest.BeforeAndAfterEach.$anonfun$runTest$1(BeforeAndAfterEach.scala:247)
30360[info]   at 
org.scalatest.Status.$anonfun$withAfterEffect$1(Status.scala:377)
30361[info]   at 
org.scalatest.Status.$anonfun$withAfterEffect$1$adapted(Status.scala:373)
30362[info]   at org.scalatest.SucceededStatus$.whenCompleted(Status.scala:462)
30363[info]   at org.scalatest.Status.withAfterEffect(Status.scala:373)
30364[info]   at org.scalatest.Status.withAfterEffect$(Status.scala:371)
30365[info]   at 
org.scalatest.SucceededStatus$.withAfterEffect(Status.scala:434)
30366[info]   at 
org.scalatest.BeforeAndAfterEach.runTest(BeforeAndAfterEach.scala:246)
30367[info]   at 
org.scalatest.BeforeAndAfterEach.runTest$(BeforeAndAfterEach.scala:227)
30368[info]   at org.apache.spark.SparkFunSuite.runTest(SparkFunSuite.scala:69)
30369[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$runTests$1(AnyFunSuiteLike.scala:269)
30370[info]   at 
org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
30371[info]   at scala.collection.immutable.List.foreach(List.scala:333)
30372[info]   at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
30373[info]   at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
30374[info]   at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
30375[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.runTests(AnyFunSuiteLike.scala:269)
30376[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.runTests$(AnyFunSuiteLike.scala:268)
30377[info]   at 
org.scalatest.funsuite.AnyFunSuite.runTests(AnyFunSuite.scala:1564)
30378[info]   at org.scalatest.Suite.run(Suite.scala:1114)
30379[info]   at org.scalatest.Suite.run$(Suite.scala:1096)
30380[info]   at 
org.scalatest.funsuite.AnyFunSuite.org$scalatest$funsuite$AnyFunSuiteLike$$super$run(AnyFunSuite.scala:1564)
30381[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$run$1(AnyFunSuiteLike.scala:273)
30382[info]   at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
30383[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.run(AnyFunSuiteLike.scala:273)
30384[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.run$(AnyFunSuiteLike.scala:272)
30385[info]   at 
org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterAll$$super$run(SparkFunSuite.scala:69)
30386[info]   at 
org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213)
30387[info]   at 
org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
30388[info]   at 
org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
30389[info]   at org.apache.spark.SparkFunSuite.run(SparkFunSuite.scala:69)
30390[info]   at 
org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
30391[info]   at 
org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
30392[info]   at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:414)
30393[info]   at 
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
30394[info]   at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
30395[info]   at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
30396[info]   at java.base/java.lang.Thread.run(Thread.java:1583)
30397[info]   Cause: java.lang.Throwable:
30398[info]   at 
org.apache.spark.DebugFilesystem$.addOpenStream(DebugFilesystem.scala:35)
30399[info]   at org.apache.spark.DebugFilesystem.open(DebugFilesystem.scala:75)
30400[info]   at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:997)
30401[info]   at 
org.apache.parquet.hadoop.util.HadoopInputFile.newStream(HadoopInputFile.java:69)
30402[info]   at 
org.apache.parquet.hadoop.ParquetFileReader.<init>(ParquetFileReader.java:796)
30403[info]   at 
org.apache.parquet.hadoop.ParquetFileReader.open(ParquetFileReader.java:666)
30404[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFooterReader.readFooter(ParquetFooterReader.java:85)
30405[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFooterReader.readFooter(ParquetFooterReader.java:76)
30406[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat$.$anonfun$readParquetFootersInParallel$1(ParquetFileFormat.scala:450)
30407[info]   at 
org.apache.spark.util.ThreadUtils$.$anonfun$parmap$2(ThreadUtils.scala:384)
30408[info]   at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:687)
30409[info]   at 
scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467)
30410[info]   at 
java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1423)
30411[info]   at 
java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
30412[info]   at 
java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
30413[info]   at 
java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
30414[info]   at 
java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
30415[info]   at 
java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
 {code}

  was:
There are two test cases, ParquetFileFormatV1Suite and 
ParquetFileFormatV2Suite, that often fail in the daily tests of Java 21. The 
reason for the failure is 'There are ${n} possibly leaked file streams..'.

[https://github.com/apache/spark/actions/runs/6899686304/job/18771676570]

 
{code:java}
===== POSSIBLE THREAD LEAK IN SUITE 
o.a.s.sql.execution.datasources.parquet.ParquetFileFormatV1Suite, threads: 
readingParquetFooters-ForkJoinPool-7045-worker-3 (daemon=true), 
readingParquetFooters-ForkJoinPool-7045-worker-4 (daemon=true), 
shuffle-boss-2239-1 (daemon=true), rpc-boss-2236-1 (daemon=true) =====
30295
30296
30297[info] 
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatV1Suite *** 
ABORTED *** (11 seconds, 836 milliseconds)
30298[info]   The code passed to eventually never returned normally. Attempted 
15 times over 10.009598219999999 seconds. Last failure message: There are 2 
possibly leaked file streams.. (SharedSparkSession.scala:164)
30299[info]   org.scalatest.exceptions.TestFailedDueToTimeoutException:
30300[info]   at 
org.scalatest.enablers.Retrying$$anon$4.tryTryAgain$2(Retrying.scala:219)
30301[info]   at 
org.scalatest.enablers.Retrying$$anon$4.retry(Retrying.scala:226)
30302[info]   at 
org.scalatest.concurrent.Eventually.eventually(Eventually.scala:313)
30303[info]   at 
org.scalatest.concurrent.Eventually.eventually$(Eventually.scala:312)
30304[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatSuite.eventually(ParquetFileFormatSuite.scala:31)
30305[info]   at 
org.apache.spark.sql.test.SharedSparkSessionBase.afterEach(SharedSparkSession.scala:164)
30306[info]   at 
org.apache.spark.sql.test.SharedSparkSessionBase.afterEach$(SharedSparkSession.scala:158)
30307[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatSuite.afterEach(ParquetFileFormatSuite.scala:31)
30308[info]   at 
org.scalatest.BeforeAndAfterEach.$anonfun$runTest$1(BeforeAndAfterEach.scala:247)
30309[info]   at 
org.scalatest.Status.$anonfun$withAfterEffect$1(Status.scala:377)
30310[info]   at 
org.scalatest.Status.$anonfun$withAfterEffect$1$adapted(Status.scala:373)
30311[info]   at org.scalatest.SucceededStatus$.whenCompleted(Status.scala:462)
30312[info]   at org.scalatest.Status.withAfterEffect(Status.scala:373)
30313[info]   at org.scalatest.Status.withAfterEffect$(Status.scala:371)
30314[info]   at 
org.scalatest.SucceededStatus$.withAfterEffect(Status.scala:434)
30315[info]   at 
org.scalatest.BeforeAndAfterEach.runTest(BeforeAndAfterEach.scala:246)
30316[info]   at 
org.scalatest.BeforeAndAfterEach.runTest$(BeforeAndAfterEach.scala:227)
30317[info]   at org.apache.spark.SparkFunSuite.runTest(SparkFunSuite.scala:69)
30318[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$runTests$1(AnyFunSuiteLike.scala:269)
30319[info]   at 
org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
30320[info]   at scala.collection.immutable.List.foreach(List.scala:333)
30321[info]   at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
30322[info]   at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
30323[info]   at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
30324[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.runTests(AnyFunSuiteLike.scala:269)
30325[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.runTests$(AnyFunSuiteLike.scala:268)
30326[info]   at 
org.scalatest.funsuite.AnyFunSuite.runTests(AnyFunSuite.scala:1564)
30327[info]   at org.scalatest.Suite.run(Suite.scala:1114)
30328[info]   at org.scalatest.Suite.run$(Suite.scala:1096)
30329[info]   at 
org.scalatest.funsuite.AnyFunSuite.org$scalatest$funsuite$AnyFunSuiteLike$$super$run(AnyFunSuite.scala:1564)
30330[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$run$1(AnyFunSuiteLike.scala:273)
30331[info]   at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
30332[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.run(AnyFunSuiteLike.scala:273)
30333[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.run$(AnyFunSuiteLike.scala:272)
30334[info]   at 
org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterAll$$super$run(SparkFunSuite.scala:69)
30335[info]   at 
org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213)
30336[info]   at 
org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
30337[info]   at 
org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
30338[info]   at org.apache.spark.SparkFunSuite.run(SparkFunSuite.scala:69)
30339[info]   at 
org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
30340[info]   at 
org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
30341[info]   at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:414)
30342[info]   at 
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
30343[info]   at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
30344[info]   at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
30345[info]   at java.base/java.lang.Thread.run(Thread.java:1583)
30346[info]   Cause: java.lang.IllegalStateException: There are 2 possibly 
leaked file streams.
30347[info]   at 
org.apache.spark.DebugFilesystem$.assertNoOpenStreams(DebugFilesystem.scala:54)
30348[info]   at 
org.apache.spark.sql.test.SharedSparkSessionBase.$anonfun$afterEach$1(SharedSparkSession.scala:165)
30349[info]   at 
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
30350[info]   at 
org.scalatest.enablers.Retrying$$anon$4.makeAValiantAttempt$1(Retrying.scala:184)
30351[info]   at 
org.scalatest.enablers.Retrying$$anon$4.tryTryAgain$2(Retrying.scala:196)
30352[info]   at 
org.scalatest.enablers.Retrying$$anon$4.retry(Retrying.scala:226)
30353[info]   at 
org.scalatest.concurrent.Eventually.eventually(Eventually.scala:313)
30354[info]   at 
org.scalatest.concurrent.Eventually.eventually$(Eventually.scala:312)
30355[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatSuite.eventually(ParquetFileFormatSuite.scala:31)
30356[info]   at 
org.apache.spark.sql.test.SharedSparkSessionBase.afterEach(SharedSparkSession.scala:164)
30357[info]   at 
org.apache.spark.sql.test.SharedSparkSessionBase.afterEach$(SharedSparkSession.scala:158)
30358[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatSuite.afterEach(ParquetFileFormatSuite.scala:31)
30359[info]   at 
org.scalatest.BeforeAndAfterEach.$anonfun$runTest$1(BeforeAndAfterEach.scala:247)
30360[info]   at 
org.scalatest.Status.$anonfun$withAfterEffect$1(Status.scala:377)
30361[info]   at 
org.scalatest.Status.$anonfun$withAfterEffect$1$adapted(Status.scala:373)
30362[info]   at org.scalatest.SucceededStatus$.whenCompleted(Status.scala:462)
30363[info]   at org.scalatest.Status.withAfterEffect(Status.scala:373)
30364[info]   at org.scalatest.Status.withAfterEffect$(Status.scala:371)
30365[info]   at 
org.scalatest.SucceededStatus$.withAfterEffect(Status.scala:434)
30366[info]   at 
org.scalatest.BeforeAndAfterEach.runTest(BeforeAndAfterEach.scala:246)
30367[info]   at 
org.scalatest.BeforeAndAfterEach.runTest$(BeforeAndAfterEach.scala:227)
30368[info]   at org.apache.spark.SparkFunSuite.runTest(SparkFunSuite.scala:69)
30369[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$runTests$1(AnyFunSuiteLike.scala:269)
30370[info]   at 
org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
30371[info]   at scala.collection.immutable.List.foreach(List.scala:333)
30372[info]   at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
30373[info]   at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
30374[info]   at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
30375[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.runTests(AnyFunSuiteLike.scala:269)
30376[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.runTests$(AnyFunSuiteLike.scala:268)
30377[info]   at 
org.scalatest.funsuite.AnyFunSuite.runTests(AnyFunSuite.scala:1564)
30378[info]   at org.scalatest.Suite.run(Suite.scala:1114)
30379[info]   at org.scalatest.Suite.run$(Suite.scala:1096)
30380[info]   at 
org.scalatest.funsuite.AnyFunSuite.org$scalatest$funsuite$AnyFunSuiteLike$$super$run(AnyFunSuite.scala:1564)
30381[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$run$1(AnyFunSuiteLike.scala:273)
30382[info]   at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
30383[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.run(AnyFunSuiteLike.scala:273)
30384[info]   at 
org.scalatest.funsuite.AnyFunSuiteLike.run$(AnyFunSuiteLike.scala:272)
30385[info]   at 
org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterAll$$super$run(SparkFunSuite.scala:69)
30386[info]   at 
org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213)
30387[info]   at 
org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
30388[info]   at 
org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
30389[info]   at org.apache.spark.SparkFunSuite.run(SparkFunSuite.scala:69)
30390[info]   at 
org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
30391[info]   at 
org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
30392[info]   at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:414)
30393[info]   at 
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
30394[info]   at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
30395[info]   at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
30396[info]   at java.base/java.lang.Thread.run(Thread.java:1583)
30397[info]   Cause: java.lang.Throwable:
30398[info]   at 
org.apache.spark.DebugFilesystem$.addOpenStream(DebugFilesystem.scala:35)
30399[info]   at org.apache.spark.DebugFilesystem.open(DebugFilesystem.scala:75)
30400[info]   at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:997)
30401[info]   at 
org.apache.parquet.hadoop.util.HadoopInputFile.newStream(HadoopInputFile.java:69)
30402[info]   at 
org.apache.parquet.hadoop.ParquetFileReader.<init>(ParquetFileReader.java:796)
30403[info]   at 
org.apache.parquet.hadoop.ParquetFileReader.open(ParquetFileReader.java:666)
30404[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFooterReader.readFooter(ParquetFooterReader.java:85)
30405[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFooterReader.readFooter(ParquetFooterReader.java:76)
30406[info]   at 
org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat$.$anonfun$readParquetFootersInParallel$1(ParquetFileFormat.scala:450)
30407[info]   at 
org.apache.spark.util.ThreadUtils$.$anonfun$parmap$2(ThreadUtils.scala:384)
30408[info]   at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:687)
30409[info]   at 
scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467)
30410[info]   at 
java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1423)
30411[info]   at 
java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
30412[info]   at 
java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
30413[info]   at 
java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
30414[info]   at 
java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
30415[info]   at 
java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
 {code}


> `ParquetFileFormatV1Suite/ParquetFileFormatV2Suite` often fails in the daily 
> tests of Java 21
> ---------------------------------------------------------------------------------------------
>
>                 Key: SPARK-45972
>                 URL: https://issues.apache.org/jira/browse/SPARK-45972
>             Project: Spark
>          Issue Type: Improvement
>          Components: SQL, Tests
>    Affects Versions: 4.0.0
>            Reporter: Yang Jie
>            Priority: Major
>
> There are two test cases, ParquetFileFormatV1Suite and 
> ParquetFileFormatV2Suite, that often fail in the daily tests of Java 21. The 
> reason for the failure is 'There are ${n} possibly leaked file streams..'.
> [https://github.com/apache/spark/actions/runs/6899686304/job/18771676570]
> [https://github.com/apache/spark/actions/runs/6886143740/job/18731379673]
> [https://github.com/apache/spark/actions/runs/6872747886/job/18691717269]
> [https://github.com/apache/spark/actions/runs/6859020738/job/18650698085]
> https://github.com/apache/spark/actions/runs/6845491908/job/18610786715
>  
> {code:java}
> ===== POSSIBLE THREAD LEAK IN SUITE 
> o.a.s.sql.execution.datasources.parquet.ParquetFileFormatV1Suite, threads: 
> readingParquetFooters-ForkJoinPool-7045-worker-3 (daemon=true), 
> readingParquetFooters-ForkJoinPool-7045-worker-4 (daemon=true), 
> shuffle-boss-2239-1 (daemon=true), rpc-boss-2236-1 (daemon=true) =====
> 30295
> 30296
> 30297[info] 
> org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatV1Suite 
> *** ABORTED *** (11 seconds, 836 milliseconds)
> 30298[info]   The code passed to eventually never returned normally. 
> Attempted 15 times over 10.009598219999999 seconds. Last failure message: 
> There are 2 possibly leaked file streams.. (SharedSparkSession.scala:164)
> 30299[info]   org.scalatest.exceptions.TestFailedDueToTimeoutException:
> 30300[info]   at 
> org.scalatest.enablers.Retrying$$anon$4.tryTryAgain$2(Retrying.scala:219)
> 30301[info]   at 
> org.scalatest.enablers.Retrying$$anon$4.retry(Retrying.scala:226)
> 30302[info]   at 
> org.scalatest.concurrent.Eventually.eventually(Eventually.scala:313)
> 30303[info]   at 
> org.scalatest.concurrent.Eventually.eventually$(Eventually.scala:312)
> 30304[info]   at 
> org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatSuite.eventually(ParquetFileFormatSuite.scala:31)
> 30305[info]   at 
> org.apache.spark.sql.test.SharedSparkSessionBase.afterEach(SharedSparkSession.scala:164)
> 30306[info]   at 
> org.apache.spark.sql.test.SharedSparkSessionBase.afterEach$(SharedSparkSession.scala:158)
> 30307[info]   at 
> org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatSuite.afterEach(ParquetFileFormatSuite.scala:31)
> 30308[info]   at 
> org.scalatest.BeforeAndAfterEach.$anonfun$runTest$1(BeforeAndAfterEach.scala:247)
> 30309[info]   at 
> org.scalatest.Status.$anonfun$withAfterEffect$1(Status.scala:377)
> 30310[info]   at 
> org.scalatest.Status.$anonfun$withAfterEffect$1$adapted(Status.scala:373)
> 30311[info]   at 
> org.scalatest.SucceededStatus$.whenCompleted(Status.scala:462)
> 30312[info]   at org.scalatest.Status.withAfterEffect(Status.scala:373)
> 30313[info]   at org.scalatest.Status.withAfterEffect$(Status.scala:371)
> 30314[info]   at 
> org.scalatest.SucceededStatus$.withAfterEffect(Status.scala:434)
> 30315[info]   at 
> org.scalatest.BeforeAndAfterEach.runTest(BeforeAndAfterEach.scala:246)
> 30316[info]   at 
> org.scalatest.BeforeAndAfterEach.runTest$(BeforeAndAfterEach.scala:227)
> 30317[info]   at 
> org.apache.spark.SparkFunSuite.runTest(SparkFunSuite.scala:69)
> 30318[info]   at 
> org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$runTests$1(AnyFunSuiteLike.scala:269)
> 30319[info]   at 
> org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
> 30320[info]   at scala.collection.immutable.List.foreach(List.scala:333)
> 30321[info]   at 
> org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
> 30322[info]   at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
> 30323[info]   at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
> 30324[info]   at 
> org.scalatest.funsuite.AnyFunSuiteLike.runTests(AnyFunSuiteLike.scala:269)
> 30325[info]   at 
> org.scalatest.funsuite.AnyFunSuiteLike.runTests$(AnyFunSuiteLike.scala:268)
> 30326[info]   at 
> org.scalatest.funsuite.AnyFunSuite.runTests(AnyFunSuite.scala:1564)
> 30327[info]   at org.scalatest.Suite.run(Suite.scala:1114)
> 30328[info]   at org.scalatest.Suite.run$(Suite.scala:1096)
> 30329[info]   at 
> org.scalatest.funsuite.AnyFunSuite.org$scalatest$funsuite$AnyFunSuiteLike$$super$run(AnyFunSuite.scala:1564)
> 30330[info]   at 
> org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$run$1(AnyFunSuiteLike.scala:273)
> 30331[info]   at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
> 30332[info]   at 
> org.scalatest.funsuite.AnyFunSuiteLike.run(AnyFunSuiteLike.scala:273)
> 30333[info]   at 
> org.scalatest.funsuite.AnyFunSuiteLike.run$(AnyFunSuiteLike.scala:272)
> 30334[info]   at 
> org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterAll$$super$run(SparkFunSuite.scala:69)
> 30335[info]   at 
> org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213)
> 30336[info]   at 
> org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
> 30337[info]   at 
> org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
> 30338[info]   at org.apache.spark.SparkFunSuite.run(SparkFunSuite.scala:69)
> 30339[info]   at 
> org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
> 30340[info]   at 
> org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
> 30341[info]   at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:414)
> 30342[info]   at 
> java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
> 30343[info]   at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
> 30344[info]   at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
> 30345[info]   at java.base/java.lang.Thread.run(Thread.java:1583)
> 30346[info]   Cause: java.lang.IllegalStateException: There are 2 possibly 
> leaked file streams.
> 30347[info]   at 
> org.apache.spark.DebugFilesystem$.assertNoOpenStreams(DebugFilesystem.scala:54)
> 30348[info]   at 
> org.apache.spark.sql.test.SharedSparkSessionBase.$anonfun$afterEach$1(SharedSparkSession.scala:165)
> 30349[info]   at 
> scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
> 30350[info]   at 
> org.scalatest.enablers.Retrying$$anon$4.makeAValiantAttempt$1(Retrying.scala:184)
> 30351[info]   at 
> org.scalatest.enablers.Retrying$$anon$4.tryTryAgain$2(Retrying.scala:196)
> 30352[info]   at 
> org.scalatest.enablers.Retrying$$anon$4.retry(Retrying.scala:226)
> 30353[info]   at 
> org.scalatest.concurrent.Eventually.eventually(Eventually.scala:313)
> 30354[info]   at 
> org.scalatest.concurrent.Eventually.eventually$(Eventually.scala:312)
> 30355[info]   at 
> org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatSuite.eventually(ParquetFileFormatSuite.scala:31)
> 30356[info]   at 
> org.apache.spark.sql.test.SharedSparkSessionBase.afterEach(SharedSparkSession.scala:164)
> 30357[info]   at 
> org.apache.spark.sql.test.SharedSparkSessionBase.afterEach$(SharedSparkSession.scala:158)
> 30358[info]   at 
> org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatSuite.afterEach(ParquetFileFormatSuite.scala:31)
> 30359[info]   at 
> org.scalatest.BeforeAndAfterEach.$anonfun$runTest$1(BeforeAndAfterEach.scala:247)
> 30360[info]   at 
> org.scalatest.Status.$anonfun$withAfterEffect$1(Status.scala:377)
> 30361[info]   at 
> org.scalatest.Status.$anonfun$withAfterEffect$1$adapted(Status.scala:373)
> 30362[info]   at 
> org.scalatest.SucceededStatus$.whenCompleted(Status.scala:462)
> 30363[info]   at org.scalatest.Status.withAfterEffect(Status.scala:373)
> 30364[info]   at org.scalatest.Status.withAfterEffect$(Status.scala:371)
> 30365[info]   at 
> org.scalatest.SucceededStatus$.withAfterEffect(Status.scala:434)
> 30366[info]   at 
> org.scalatest.BeforeAndAfterEach.runTest(BeforeAndAfterEach.scala:246)
> 30367[info]   at 
> org.scalatest.BeforeAndAfterEach.runTest$(BeforeAndAfterEach.scala:227)
> 30368[info]   at 
> org.apache.spark.SparkFunSuite.runTest(SparkFunSuite.scala:69)
> 30369[info]   at 
> org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$runTests$1(AnyFunSuiteLike.scala:269)
> 30370[info]   at 
> org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
> 30371[info]   at scala.collection.immutable.List.foreach(List.scala:333)
> 30372[info]   at 
> org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
> 30373[info]   at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
> 30374[info]   at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
> 30375[info]   at 
> org.scalatest.funsuite.AnyFunSuiteLike.runTests(AnyFunSuiteLike.scala:269)
> 30376[info]   at 
> org.scalatest.funsuite.AnyFunSuiteLike.runTests$(AnyFunSuiteLike.scala:268)
> 30377[info]   at 
> org.scalatest.funsuite.AnyFunSuite.runTests(AnyFunSuite.scala:1564)
> 30378[info]   at org.scalatest.Suite.run(Suite.scala:1114)
> 30379[info]   at org.scalatest.Suite.run$(Suite.scala:1096)
> 30380[info]   at 
> org.scalatest.funsuite.AnyFunSuite.org$scalatest$funsuite$AnyFunSuiteLike$$super$run(AnyFunSuite.scala:1564)
> 30381[info]   at 
> org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$run$1(AnyFunSuiteLike.scala:273)
> 30382[info]   at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
> 30383[info]   at 
> org.scalatest.funsuite.AnyFunSuiteLike.run(AnyFunSuiteLike.scala:273)
> 30384[info]   at 
> org.scalatest.funsuite.AnyFunSuiteLike.run$(AnyFunSuiteLike.scala:272)
> 30385[info]   at 
> org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterAll$$super$run(SparkFunSuite.scala:69)
> 30386[info]   at 
> org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213)
> 30387[info]   at 
> org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
> 30388[info]   at 
> org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
> 30389[info]   at org.apache.spark.SparkFunSuite.run(SparkFunSuite.scala:69)
> 30390[info]   at 
> org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
> 30391[info]   at 
> org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
> 30392[info]   at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:414)
> 30393[info]   at 
> java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
> 30394[info]   at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
> 30395[info]   at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
> 30396[info]   at java.base/java.lang.Thread.run(Thread.java:1583)
> 30397[info]   Cause: java.lang.Throwable:
> 30398[info]   at 
> org.apache.spark.DebugFilesystem$.addOpenStream(DebugFilesystem.scala:35)
> 30399[info]   at 
> org.apache.spark.DebugFilesystem.open(DebugFilesystem.scala:75)
> 30400[info]   at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:997)
> 30401[info]   at 
> org.apache.parquet.hadoop.util.HadoopInputFile.newStream(HadoopInputFile.java:69)
> 30402[info]   at 
> org.apache.parquet.hadoop.ParquetFileReader.<init>(ParquetFileReader.java:796)
> 30403[info]   at 
> org.apache.parquet.hadoop.ParquetFileReader.open(ParquetFileReader.java:666)
> 30404[info]   at 
> org.apache.spark.sql.execution.datasources.parquet.ParquetFooterReader.readFooter(ParquetFooterReader.java:85)
> 30405[info]   at 
> org.apache.spark.sql.execution.datasources.parquet.ParquetFooterReader.readFooter(ParquetFooterReader.java:76)
> 30406[info]   at 
> org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat$.$anonfun$readParquetFootersInParallel$1(ParquetFileFormat.scala:450)
> 30407[info]   at 
> org.apache.spark.util.ThreadUtils$.$anonfun$parmap$2(ThreadUtils.scala:384)
> 30408[info]   at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:687)
> 30409[info]   at 
> scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467)
> 30410[info]   at 
> java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1423)
> 30411[info]   at 
> java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
> 30412[info]   at 
> java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
> 30413[info]   at 
> java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
> 30414[info]   at 
> java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
> 30415[info]   at 
> java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
>  {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to