[SPARK-16193][TESTS] Address flaky ExternalAppendOnlyMapSuite spilling tests
## What changes were proposed in this pull request? Make spill tests wait until job has completed before returning the number of stages that spilled ## How was this patch tested? Existing Jenkins tests. Author: Sean Owen <sowen@cloudera.com> Closes #13896 from srowen/SPARK-16193.
This commit is contained in:
parent
3ee9695d1f
commit
e87741589a
|
@ -22,6 +22,7 @@ import java.net.{URI, URL}
|
|||
import java.nio.charset.StandardCharsets
|
||||
import java.nio.file.Paths
|
||||
import java.util.Arrays
|
||||
import java.util.concurrent.{CountDownLatch, TimeUnit}
|
||||
import java.util.jar.{JarEntry, JarOutputStream}
|
||||
|
||||
import scala.collection.JavaConverters._
|
||||
|
@ -190,8 +191,14 @@ private[spark] object TestUtils {
|
|||
private class SpillListener extends SparkListener {
|
||||
private val stageIdToTaskMetrics = new mutable.HashMap[Int, ArrayBuffer[TaskMetrics]]
|
||||
private val spilledStageIds = new mutable.HashSet[Int]
|
||||
private val stagesDone = new CountDownLatch(1)
|
||||
|
||||
def numSpilledStages: Int = spilledStageIds.size
|
||||
def numSpilledStages: Int = {
|
||||
// Long timeout, just in case somehow the job end isn't notified.
|
||||
// Fails if a timeout occurs
|
||||
assert(stagesDone.await(10, TimeUnit.SECONDS))
|
||||
spilledStageIds.size
|
||||
}
|
||||
|
||||
override def onTaskEnd(taskEnd: SparkListenerTaskEnd): Unit = {
|
||||
stageIdToTaskMetrics.getOrElseUpdate(
|
||||
|
@ -206,4 +213,8 @@ private class SpillListener extends SparkListener {
|
|||
spilledStageIds += stageId
|
||||
}
|
||||
}
|
||||
|
||||
override def onJobEnd(jobEnd: SparkListenerJobEnd): Unit = {
|
||||
stagesDone.countDown()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue