@@ -31,10 +31,21 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") {
3131 private val startTime : Option [Long ] = parent.sc.map(_.startTime)
3232 private val listener = parent.listener
3333
34+ private def getlastStageDescription (job : JobUIData ) = {
35+ val lastStageInfo = Option (job.stageIds)
36+ .filter(_.nonEmpty)
37+ .flatMap { ids => listener.stageIdToInfo.get(ids.max)}
38+ val lastStageData = lastStageInfo.flatMap { s =>
39+ listener.stageIdToData.get((s.stageId, s.attemptId))
40+ }
41+ lastStageData.flatMap(_.description).getOrElse(" " )
42+ }
43+
3444 private def applicationTimelineView (jobs : Seq [JobUIData ], now : Long ): Seq [Node ] = {
3545 val jobEventJsonAsStrSeq = jobs.flatMap { jobUIData =>
3646 val jobId = jobUIData.jobId
3747 val status = jobUIData.status
48+ val jobDescription = getlastStageDescription(jobUIData)
3849 val submissionTimeOpt = jobUIData.submissionTime
3950 val completionTimeOpt = jobUIData.completionTime
4051
@@ -58,8 +69,8 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") {
5869 | 'group': 'jobs',
5970 | 'start': new Date( ${submissionTime}),
6071 | 'end': new Date( ${completionTime}),
61- | 'content': '<div class="application-timeline-content">Job ${jobId}</div>',
62- | 'title': 'Job ${jobId}\\ nStatus: ${status}\\ n' +
72+ | 'content': '<div class="application-timeline-content"> ${jobDescription} ( Job ${jobId}) </div>',
73+ | 'title': ' ${jobDescription} ( Job ${jobId}) \\ nStatus: ${status}\\ n' +
6374 | 'Submission Time: ${UIUtils .formatDate(new Date (submissionTime))}' +
6475 | ' ${
6576 if (status != JobExecutionStatus .RUNNING ) {
@@ -70,7 +81,7 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") {
7081 }'
7182 |}
7283 """ .stripMargin
73- Option (jobEventJsonAsStr)
84+ Some (jobEventJsonAsStr)
7485 }
7586
7687 val executorEventJsonAsStrSeq =
@@ -169,7 +180,7 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") {
169180 }
170181
171182 val lastStageName = lastStageInfo.map(_.name).getOrElse(" (Unknown Stage Name)" )
172- val lastStageDescription = lastStageData.flatMap(_.description).getOrElse(" " )
183+ val lastStageDescription = getlastStageDescription(job) // lastStageData.flatMap(_.description).getOrElse("")
173184 val duration : Option [Long ] = {
174185 job.submissionTime.map { start =>
175186 val end = job.completionTime.getOrElse(System .currentTimeMillis())
0 commit comments