Skip to content

Commit fc45425

Browse files
rootroot
authored andcommitted
[SPARK-12708][UI] Sorting task error in Stages Page when yarn mode
1 parent 726bd3c commit fc45425

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.apache.spark.ui.jobs
1919

2020
import java.net.URLEncoder
21+
import java.net.URLDecoder
2122
import java.util.Date
2223
import javax.servlet.http.HttpServletRequest
2324

@@ -100,7 +101,19 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") {
100101
val parameterTaskPrevPageSize = request.getParameter("task.prevPageSize")
101102

102103
val taskPage = Option(parameterTaskPage).map(_.toInt).getOrElse(1)
103-
val taskSortColumn = Option(parameterTaskSortColumn).getOrElse("Index")
104+
val taskSortColumn = Option(parameterTaskSortColumn).map {
105+
sortColumn =>
106+
// If sortColumn contains "/", `getParameter("task.sort")` will return
107+
// "%252F" when yarn mode. we need additional decode.
108+
// See also SPARK-4313, YARN-2844.
109+
var column = sortColumn
110+
var decodedColumn = URLDecoder.decode(column, "UTF-8")
111+
while (column != decodedColumn) {
112+
column = decodedColumn
113+
decodedColumn = URLDecoder.decode(column, "UTF-8")
114+
}
115+
column
116+
}.getOrElse("Index")
104117
val taskSortDesc = Option(parameterTaskSortDesc).map(_.toBoolean).getOrElse(false)
105118
val taskPageSize = Option(parameterTaskPageSize).map(_.toInt).getOrElse(100)
106119
val taskPrevPageSize = Option(parameterTaskPrevPageSize).map(_.toInt).getOrElse(taskPageSize)

0 commit comments

Comments
 (0)