Repository: spark
Updated Branches:
  refs/heads/branch-1.3 586e0d924 -> de8b2d4be


[SPARK-6088] Correct how tasks that get remote results are shown in UI.

It would be great to fix this for 1.3. since the fix is surgical and it helps 
understandability for users.

cc shivaram pwendell

Author: Kay Ousterhout <kayousterh...@gmail.com>

Closes #4839 from kayousterhout/SPARK-6088 and squashes the following commits:

3ab012c [Kay Ousterhout] Update getting result time incrementally, correctly 
set GET_RESULT status
f346b49 [Kay Ousterhout] Typos
748ea6b [Kay Ousterhout] Fixed build failure
84d617c [Kay Ousterhout] [SPARK-6088] Correct how tasks that get remote results 
are shown in the UI.

(cherry picked from commit 6948ab6f8ba836446b005f2cf1cc4abc944c5053)
Signed-off-by: Andrew Or <and...@databricks.com>


Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/de8b2d4b
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/de8b2d4b
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/de8b2d4b

Branch: refs/heads/branch-1.3
Commit: de8b2d4be84e48a764cf17ea0d292f177274d5ad
Parents: 586e0d9
Author: Kay Ousterhout <kayousterh...@gmail.com>
Authored: Tue Mar 24 16:26:43 2015 -0700
Committer: Andrew Or <and...@databricks.com>
Committed: Tue Mar 24 16:26:53 2015 -0700

----------------------------------------------------------------------
 .../org/apache/spark/scheduler/TaskInfo.scala   |  8 ++++---
 .../org/apache/spark/ui/jobs/StagePage.scala    | 25 ++++++++++++++------
 2 files changed, 23 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/de8b2d4b/core/src/main/scala/org/apache/spark/scheduler/TaskInfo.scala
----------------------------------------------------------------------
diff --git a/core/src/main/scala/org/apache/spark/scheduler/TaskInfo.scala 
b/core/src/main/scala/org/apache/spark/scheduler/TaskInfo.scala
index 6fa1f2c..132a9ce 100644
--- a/core/src/main/scala/org/apache/spark/scheduler/TaskInfo.scala
+++ b/core/src/main/scala/org/apache/spark/scheduler/TaskInfo.scala
@@ -81,9 +81,11 @@ class TaskInfo(
 
   def status: String = {
     if (running) {
-      "RUNNING"
-    } else if (gettingResult) {
-      "GET RESULT"
+      if (gettingResult) {
+        "GET RESULT"
+      } else {
+        "RUNNING"
+      }
     } else if (failed) {
       "FAILED"
     } else if (successful) {

http://git-wip-us.apache.org/repos/asf/spark/blob/de8b2d4b/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala
----------------------------------------------------------------------
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala 
b/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala
index 110f878..a121556 100644
--- a/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala
@@ -268,11 +268,7 @@ private[ui] class StagePage(parent: StagesTab) extends 
WebUIPage("stage") {
             </td> +: getFormattedTimeQuantiles(serializationTimes)
 
           val gettingResultTimes = validTasks.map { case TaskUIData(info, _, 
_) =>
-            if (info.gettingResultTime > 0) {
-              (info.finishTime - info.gettingResultTime).toDouble
-            } else {
-              0.0
-            }
+            getGettingResultTime(info).toDouble
           }
           val gettingResultQuantiles =
             <td>
@@ -462,7 +458,7 @@ private[ui] class StagePage(parent: StagesTab) extends 
WebUIPage("stage") {
       val gcTime = metrics.map(_.jvmGCTime).getOrElse(0L)
       val taskDeserializationTime = 
metrics.map(_.executorDeserializeTime).getOrElse(0L)
       val serializationTime = 
metrics.map(_.resultSerializationTime).getOrElse(0L)
-      val gettingResultTime = info.gettingResultTime
+      val gettingResultTime = getGettingResultTime(info)
 
       val maybeAccumulators = info.accumulables
       val accumulatorsReadable = maybeAccumulators.map{acc => s"${acc.name}: 
${acc.update.get}"}
@@ -625,6 +621,19 @@ private[ui] class StagePage(parent: StagesTab) extends 
WebUIPage("stage") {
     <td>{errorSummary}{details}</td>
   }
 
+  private def getGettingResultTime(info: TaskInfo): Long = {
+    if (info.gettingResultTime > 0) {
+      if (info.finishTime > 0) {
+        info.finishTime - info.gettingResultTime
+      } else {
+        // The task is still fetching the result.
+        System.currentTimeMillis - info.gettingResultTime
+      }
+    } else {
+      0L
+    }
+  }
+
   private def getSchedulerDelay(info: TaskInfo, metrics: TaskMetrics): Long = {
     val totalExecutionTime =
       if (info.gettingResult) {
@@ -636,6 +645,8 @@ private[ui] class StagePage(parent: StagesTab) extends 
WebUIPage("stage") {
       }
     val executorOverhead = (metrics.executorDeserializeTime +
       metrics.resultSerializationTime)
-    math.max(0, totalExecutionTime - metrics.executorRunTime - 
executorOverhead)
+    math.max(
+      0,
+      totalExecutionTime - metrics.executorRunTime - executorOverhead - 
getGettingResultTime(info))
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org
For additional commands, e-mail: commits-h...@spark.apache.org

Reply via email to