[SPARK-7519] [SQL] fix minor bugs in thrift server UI

Bugs description:

1. There are extra commas on the top of session list.
2. The format of time in "Start at:" part is not the same as others.
3. The total number of online sessions is wrong.

Author: tianyi <tianyi.asiainfo@gmail.com>

Closes #6048 from tianyi/SPARK-7519 and squashes the following commits:

ed366b7 [tianyi] fix bug

(cherry picked from commit 2242ab31e9)
Signed-off-by: Cheng Lian <lian@databricks.com>
This commit is contained in:
tianyi 2015-05-11 14:08:15 +08:00 committed by Cheng Lian
parent 5f227fdbfe
commit fff3c86b06
2 changed files with 8 additions and 6 deletions

View file

@ -147,7 +147,7 @@ object HiveThriftServer2 extends Logging {
override def onApplicationEnd(applicationEnd: SparkListenerApplicationEnd): Unit = { override def onApplicationEnd(applicationEnd: SparkListenerApplicationEnd): Unit = {
server.stop() server.stop()
} }
var onlineSessionNum: Int = 0
val sessionList = new mutable.LinkedHashMap[String, SessionInfo] val sessionList = new mutable.LinkedHashMap[String, SessionInfo]
val executionList = new mutable.LinkedHashMap[String, ExecutionInfo] val executionList = new mutable.LinkedHashMap[String, ExecutionInfo]
val retainedStatements = val retainedStatements =
@ -170,11 +170,13 @@ object HiveThriftServer2 extends Logging {
def onSessionCreated(ip: String, sessionId: String, userName: String = "UNKNOWN"): Unit = { def onSessionCreated(ip: String, sessionId: String, userName: String = "UNKNOWN"): Unit = {
val info = new SessionInfo(sessionId, System.currentTimeMillis, ip, userName) val info = new SessionInfo(sessionId, System.currentTimeMillis, ip, userName)
sessionList.put(sessionId, info) sessionList.put(sessionId, info)
onlineSessionNum += 1
trimSessionIfNecessary() trimSessionIfNecessary()
} }
def onSessionClosed(sessionId: String): Unit = { def onSessionClosed(sessionId: String): Unit = {
sessionList(sessionId).finishTimestamp = System.currentTimeMillis sessionList(sessionId).finishTimestamp = System.currentTimeMillis
onlineSessionNum -= 1
} }
def onStatementStart( def onStatementStart(

View file

@ -29,7 +29,7 @@ import org.apache.spark.ui.UIUtils._
import org.apache.spark.ui._ import org.apache.spark.ui._
/** Page for Spark Web UI that shows statistics of a streaming job */ /** Page for Spark Web UI that shows statistics of a thrift server */
private[ui] class ThriftServerPage(parent: ThriftServerTab) extends WebUIPage("") with Logging { private[ui] class ThriftServerPage(parent: ThriftServerTab) extends WebUIPage("") with Logging {
private val listener = parent.listener private val listener = parent.listener
@ -42,7 +42,7 @@ private[ui] class ThriftServerPage(parent: ThriftServerTab) extends WebUIPage(""
generateBasicStats() ++ generateBasicStats() ++
<br/> ++ <br/> ++
<h4> <h4>
{listener.sessionList.size} session(s) are online, {listener.onlineSessionNum} session(s) are online,
running {listener.totalRunning} SQL statement(s) running {listener.totalRunning} SQL statement(s)
</h4> ++ </h4> ++
generateSessionStatsTable() ++ generateSessionStatsTable() ++
@ -50,12 +50,12 @@ private[ui] class ThriftServerPage(parent: ThriftServerTab) extends WebUIPage(""
UIUtils.headerSparkPage("ThriftServer", content, parent, Some(5000)) UIUtils.headerSparkPage("ThriftServer", content, parent, Some(5000))
} }
/** Generate basic stats of the streaming program */ /** Generate basic stats of the thrift server program */
private def generateBasicStats(): Seq[Node] = { private def generateBasicStats(): Seq[Node] = {
val timeSinceStart = System.currentTimeMillis() - startTime.getTime val timeSinceStart = System.currentTimeMillis() - startTime.getTime
<ul class ="unstyled"> <ul class ="unstyled">
<li> <li>
<strong>Started at: </strong> {startTime.toString} <strong>Started at: </strong> {formatDate(startTime)}
</li> </li>
<li> <li>
<strong>Time since start: </strong>{formatDurationVerbose(timeSinceStart)} <strong>Time since start: </strong>{formatDurationVerbose(timeSinceStart)}
@ -148,7 +148,7 @@ private[ui] class ThriftServerPage(parent: ThriftServerTab) extends WebUIPage(""
<tr> <tr>
<td> {session.userName} </td> <td> {session.userName} </td>
<td> {session.ip} </td> <td> {session.ip} </td>
<td> <a href={sessionLink}> {session.sessionId} </a> </td>, <td> <a href={sessionLink}> {session.sessionId} </a> </td>
<td> {formatDate(session.startTimestamp)} </td> <td> {formatDate(session.startTimestamp)} </td>
<td> {if(session.finishTimestamp > 0) formatDate(session.finishTimestamp)} </td> <td> {if(session.finishTimestamp > 0) formatDate(session.finishTimestamp)} </td>
<td> {formatDurationOption(Some(session.totalTime))} </td> <td> {formatDurationOption(Some(session.totalTime))} </td>