diff --git a/core/src/main/scala/org/apache/spark/status/AppStatusListener.scala b/core/src/main/scala/org/apache/spark/status/AppStatusListener.scala index 52d41cdd72664..4245243c52be7 100644 --- a/core/src/main/scala/org/apache/spark/status/AppStatusListener.scala +++ b/core/src/main/scala/org/apache/spark/status/AppStatusListener.scala @@ -1018,7 +1018,7 @@ private[spark] class AppStatusListener( */ def activeStages(): Seq[v1.StageData] = { liveStages.values.asScala - .filter(_.info.submissionTime.isDefined) + .filter(s => Option(s.info).exists(_.submissionTime.isDefined)) .map(_.toApi()) .toList .sortBy(_.stageId) @@ -1179,7 +1179,7 @@ private[spark] class AppStatusListener( private def getOrCreateStage(info: StageInfo): LiveStage = { val stage = liveStages.computeIfAbsent((info.stageId, info.attemptNumber), - (_: (Int, Int)) => new LiveStage()) + (_: (Int, Int)) => new LiveStage(info)) stage.info = info stage } diff --git a/core/src/main/scala/org/apache/spark/status/LiveEntity.scala b/core/src/main/scala/org/apache/spark/status/LiveEntity.scala index 38f1f25f2fcaa..d5cfdcb5842eb 100644 --- a/core/src/main/scala/org/apache/spark/status/LiveEntity.scala +++ b/core/src/main/scala/org/apache/spark/status/LiveEntity.scala @@ -393,14 +393,13 @@ private class LiveExecutorStageSummary( } -private class LiveStage extends LiveEntity { +private class LiveStage(var info: StageInfo) extends LiveEntity { import LiveEntityHelpers._ var jobs = Seq[LiveJob]() var jobIds = Set[Int]() - var info: StageInfo = null var status = v1.StageStatus.PENDING var description: Option[String] = None