All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.spark.deploy.history.HistoryPage.scala Maven / Gradle / Ivy

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.spark.deploy.history

import javax.servlet.http.HttpServletRequest

import scala.xml.Node

import org.apache.spark.status.api.v1.ApplicationInfo
import org.apache.spark.ui.{UIUtils, WebUIPage}

private[history] class HistoryPage(parent: HistoryServer) extends WebUIPage("") {

  def render(request: HttpServletRequest): Seq[Node] = {
    // stripXSS is called first to remove suspicious characters used in XSS attacks
    val requestedIncomplete =
      Option(UIUtils.stripXSS(request.getParameter("showIncomplete"))).getOrElse("false").toBoolean

    val allAppsSize = parent.getApplicationList()
      .count(isApplicationCompleted(_) != requestedIncomplete)
    val eventLogsUnderProcessCount = parent.getEventLogsUnderProcess()
    val lastUpdatedTime = parent.getLastUpdatedTime()
    val providerConfig = parent.getProviderConfig()
    val content =
       ++
      
      
    {providerConfig.map { case (k, v) =>
  • {k}: {v}
  • }}
{ if (eventLogsUnderProcessCount > 0) {

There are {eventLogsUnderProcessCount} event log(s) currently being processed which may result in additional applications getting listed on this page. Refresh the page to view updates.

} } { if (lastUpdatedTime > 0) {

Last updated: {lastUpdatedTime}

} } {

Client local time zone:

} { if (allAppsSize > 0) { ++
++ ++ } else if (requestedIncomplete) {

No incomplete applications found!

} else if (eventLogsUnderProcessCount > 0) {

No completed applications found!

} else {

No completed applications found!

++ parent.emptyListingHtml } } { if (requestedIncomplete) { "Back to completed applications" } else { "Show incomplete applications" } }
UIUtils.basicSparkPage(request, content, "History Server", true) } private def makePageLink(request: HttpServletRequest, showIncomplete: Boolean): String = { UIUtils.prependBaseUri(request, "/?" + "showIncomplete=" + showIncomplete) } private def isApplicationCompleted(appInfo: ApplicationInfo): Boolean = { appInfo.attempts.nonEmpty && appInfo.attempts.head.completed } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy