Repository: spark Updated Branches: refs/heads/master 8b877cc4e -> 8f74aa639
[SPARK-10876] Display total uptime for completed applications Author: Jean-Baptiste Onofré <[email protected]> Closes #9059 from jbonofre/SPARK-10876. Project: http://git-wip-us.apache.org/repos/asf/spark/repo Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/8f74aa63 Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/8f74aa63 Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/8f74aa63 Branch: refs/heads/master Commit: 8f74aa639759f400120794355511327fa74905da Parents: 8b877cc Author: Jean-Baptiste Onofré <[email protected]> Authored: Tue Oct 20 08:45:39 2015 +0100 Committer: Sean Owen <[email protected]> Committed: Tue Oct 20 08:45:39 2015 +0100 ---------------------------------------------------------------------- .../org/apache/spark/ui/jobs/AllJobsPage.scala | 18 +++++++++++------- .../spark/ui/jobs/JobProgressListener.scala | 7 ++++++- 2 files changed, 17 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/spark/blob/8f74aa63/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala index 041cd55..d467dd9 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala @@ -265,6 +265,7 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") { val listener = parent.jobProgresslistener listener.synchronized { val startTime = listener.startTime + val endTime = listener.endTime val activeJobs = listener.activeJobs.values.toSeq val completedJobs = listener.completedJobs.reverse.toSeq val failedJobs = listener.failedJobs.reverse.toSeq @@ -289,13 +290,16 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") { val summary: NodeSeq = <div> <ul class="unstyled"> - {if (parent.sc.isDefined) { - // Total duration is not meaningful unless the UI is live - <li> - <strong>Total Uptime: </strong> - {UIUtils.formatDuration(System.currentTimeMillis() - startTime)} - </li> - }} + <li> + <strong>Total Uptime:</strong> + { + if (endTime < 0 && parent.sc.isDefined) { + UIUtils.formatDuration(System.currentTimeMillis() - startTime) + } else if (endTime > 0) { + UIUtils.formatDuration(endTime - startTime) + } + } + </li> <li> <strong>Scheduling Mode: </strong> {listener.schedulingMode.map(_.toString).getOrElse("Unknown")} http://git-wip-us.apache.org/repos/asf/spark/blob/8f74aa63/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressListener.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressListener.scala b/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressListener.scala index 0c854f0..77d034f 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressListener.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressListener.scala @@ -53,8 +53,9 @@ class JobProgressListener(conf: SparkConf) extends SparkListener with Logging { type PoolName = String type ExecutorId = String - // Applicatin: + // Application: @volatile var startTime = -1L + @volatile var endTime = -1L // Jobs: val activeJobs = new HashMap[JobId, JobUIData] @@ -536,6 +537,10 @@ class JobProgressListener(conf: SparkConf) extends SparkListener with Logging { startTime = appStarted.time } + override def onApplicationEnd(appEnded: SparkListenerApplicationEnd) { + endTime = appEnded.time + } + /** * For testing only. Wait until at least `numExecutors` executors are up, or throw * `TimeoutException` if the waiting time elapsed before `numExecutors` executors up. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
