Skip to content

Commit 649bb19

Browse files
committed
fix link problems
1 parent 41bb189 commit 649bb19

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

core/src/main/scala/org/apache/spark/ui/PagedTable.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ private[ui] trait PagedTable[T] {
179179
Splitter
180180
.on('&')
181181
.trimResults()
182+
.omitEmptyStrings()
182183
.withKeyValueSeparator("=")
183184
.split(querystring)
184185
.asScala

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

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import java.net.URLEncoder
2121
import java.util.Date
2222
import javax.servlet.http.HttpServletRequest
2323

24+
import scala.collection.JavaConverters._
2425
import scala.collection.mutable.{HashMap, ListBuffer}
2526
import scala.xml._
2627

@@ -217,6 +218,9 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") {
217218
request: HttpServletRequest,
218219
jobTag: String,
219220
jobs: Seq[JobUIData]): Seq[Node] = {
221+
val allParameters = request.getParameterMap.asScala.toMap
222+
val parameterOtherTable = allParameters.filterNot(_._1.startsWith(jobTag))
223+
.map(para => para._1 + "=" + para._2(0))
220224

221225
val someJobHasJobGroup = jobs.exists(_.jobGroup.isDefined)
222226
val jobIdTitle = if (someJobHasJobGroup) "Job Id (Job Group)" else "Job Id"
@@ -254,6 +258,8 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") {
254258
jobs,
255259
jobTag,
256260
UIUtils.prependBaseUri(parent.basePath),
261+
"jobs", // subPath
262+
parameterOtherTable,
257263
parent.jobProgresslistener.stageIdToInfo,
258264
parent.jobProgresslistener.stageIdToData,
259265
currentTime,
@@ -482,6 +488,8 @@ private[ui] class JobPagedTable(
482488
data: Seq[JobUIData],
483489
jobTag: String,
484490
basePath: String,
491+
subPath: String,
492+
parameterOtherTable: Iterable[String],
485493
stageIdToInfo: HashMap[Int, StageInfo],
486494
stageIdToData: HashMap[(Int, Int), StageUIData],
487495
currentTime: Long,
@@ -490,6 +498,8 @@ private[ui] class JobPagedTable(
490498
sortColumn: String,
491499
desc: Boolean
492500
) extends PagedTable[JobTableRowData] {
501+
val parameterPath = UIUtils.prependBaseUri(basePath) + s"/$subPath/?" +
502+
parameterOtherTable.mkString("&")
493503

494504
override def tableId: String = jobTag + "-table"
495505

@@ -514,19 +524,20 @@ private[ui] class JobPagedTable(
514524

515525
override def pageLink(page: Int): String = {
516526
val encodedSortColumn = URLEncoder.encode(sortColumn, "UTF-8")
517-
basePath +
518-
s"?$pageNumberFormField=$page" +
527+
parameterPath +
528+
s"&$pageNumberFormField=$page" +
519529
s"&$jobTag.sort=$encodedSortColumn" +
520530
s"&$jobTag.desc=$desc" +
521531
s"&$pageSizeFormField=$pageSize"
522532
}
523533

524534
override def goButtonFormPath: String = {
525535
val encodedSortColumn = URLEncoder.encode(sortColumn, "UTF-8")
526-
s"$basePath?$jobTag.sort=$encodedSortColumn&$jobTag.desc=$desc"
536+
s"$parameterPath&$jobTag.sort=$encodedSortColumn&$jobTag.desc=$desc"
527537
}
528538

529539
override def headers: Seq[Node] = {
540+
// Information for each header: title, cssClass, and sortable
530541
val jobHeadersAndCssClasses: Seq[(String, String, Boolean)] =
531542
Seq(
532543
(jobIdTitle, "", true),
@@ -543,8 +554,8 @@ private[ui] class JobPagedTable(
543554
jobHeadersAndCssClasses.map { case (header, cssClass, sortable) =>
544555
if (header == sortColumn) {
545556
val headerLink = Unparsed(
546-
basePath +
547-
s"?$jobTag.sort=${URLEncoder.encode(header, "UTF-8")}" +
557+
parameterPath +
558+
s"&$jobTag.sort=${URLEncoder.encode(header, "UTF-8")}" +
548559
s"&$jobTag.desc=${!desc}" +
549560
s"&$jobTag.pageSize=$pageSize")
550561
val arrow = if (desc) "▾" else "▴" // UP or DOWN
@@ -559,8 +570,8 @@ private[ui] class JobPagedTable(
559570
} else {
560571
if (sortable) {
561572
val headerLink = Unparsed(
562-
basePath +
563-
s"?$jobTag.sort=${URLEncoder.encode(header, "UTF-8")}" +
573+
parameterPath +
574+
s"&$jobTag.sort=${URLEncoder.encode(header, "UTF-8")}" +
564575
s"&$jobTag.pageSize=$pageSize")
565576

566577
<th class={cssClass}>

core/src/test/scala/org/apache/spark/ui/UISeleniumSuite.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ class UISeleniumSuite extends SparkFunSuite with WebBrowser with Matchers with B
226226
eventually(timeout(5 seconds), interval(50 milliseconds)) {
227227
goToUi(sc, "/jobs")
228228
val tableHeaders = findAll(cssSelector("th")).map(_.text).toSeq
229+
// Can suffix up/down arrow in the header
229230
tableHeaders(0) should startWith ("Job Id (Job Group)")
230231
}
231232

0 commit comments

Comments
 (0)