Skip to content
Snippets Groups Projects
Commit 17bafeab authored by shivaram's avatar shivaram
Browse files

Merge pull request #864 from rxin/json1

Revert json library change
parents f9fc5c16 a77e0abb
No related branches found
No related tags found
No related merge requests found
...@@ -106,6 +106,10 @@ ...@@ -106,6 +106,10 @@
<groupId>org.scala-lang</groupId> <groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId> <artifactId>scala-library</artifactId>
</dependency> </dependency>
<dependency>
<groupId>net.liftweb</groupId>
<artifactId>lift-json_2.9.2</artifactId>
</dependency>
<dependency> <dependency>
<groupId>it.unimi.dsi</groupId> <groupId>it.unimi.dsi</groupId>
<artifactId>fastutil</artifactId> <artifactId>fastutil</artifactId>
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
package spark.deploy package spark.deploy
import scala.util.parsing.json.{JSONArray, JSONObject, JSONType} import net.liftweb.json.JsonDSL._
import spark.deploy.DeployMessages.{MasterStateResponse, WorkerStateResponse} import spark.deploy.DeployMessages.{MasterStateResponse, WorkerStateResponse}
import spark.deploy.master.{ApplicationInfo, WorkerInfo} import spark.deploy.master.{ApplicationInfo, WorkerInfo}
...@@ -25,63 +25,62 @@ import spark.deploy.worker.ExecutorRunner ...@@ -25,63 +25,62 @@ import spark.deploy.worker.ExecutorRunner
private[spark] object JsonProtocol { private[spark] object JsonProtocol {
def writeWorkerInfo(obj: WorkerInfo) = {
("id" -> obj.id) ~
("host" -> obj.host) ~
("port" -> obj.port) ~
("webuiaddress" -> obj.webUiAddress) ~
("cores" -> obj.cores) ~
("coresused" -> obj.coresUsed) ~
("memory" -> obj.memory) ~
("memoryused" -> obj.memoryUsed) ~
("state" -> obj.state.toString)
}
def writeWorkerInfo(obj: WorkerInfo): JSONType = JSONObject(Map( def writeApplicationInfo(obj: ApplicationInfo) = {
"id" -> obj.id, ("starttime" -> obj.startTime) ~
"host" -> obj.host, ("id" -> obj.id) ~
"port" -> obj.port, ("name" -> obj.desc.name) ~
"webuiaddress" -> obj.webUiAddress, ("cores" -> obj.desc.maxCores) ~
"cores" -> obj.cores, ("user" -> obj.desc.user) ~
"coresused" -> obj.coresUsed, ("memoryperslave" -> obj.desc.memoryPerSlave) ~
"memory" -> obj.memory, ("submitdate" -> obj.submitDate.toString)
"memoryused" -> obj.memoryUsed, }
"state" -> obj.state.toString
))
def writeApplicationInfo(obj: ApplicationInfo): JSONType = JSONObject(Map( def writeApplicationDescription(obj: ApplicationDescription) = {
"starttime" -> obj.startTime, ("name" -> obj.name) ~
"id" -> obj.id, ("cores" -> obj.maxCores) ~
"name" -> obj.desc.name, ("memoryperslave" -> obj.memoryPerSlave) ~
"cores" -> obj.desc.maxCores, ("user" -> obj.user)
"user" -> obj.desc.user, }
"memoryperslave" -> obj.desc.memoryPerSlave,
"submitdate" -> obj.submitDate.toString
))
def writeApplicationDescription(obj: ApplicationDescription): JSONType = JSONObject(Map( def writeExecutorRunner(obj: ExecutorRunner) = {
"name" -> obj.name, ("id" -> obj.execId) ~
"cores" -> obj.maxCores, ("memory" -> obj.memory) ~
"memoryperslave" -> obj.memoryPerSlave, ("appid" -> obj.appId) ~
"user" -> obj.user ("appdesc" -> writeApplicationDescription(obj.appDesc))
)) }
def writeExecutorRunner(obj: ExecutorRunner): JSONType = JSONObject(Map( def writeMasterState(obj: MasterStateResponse) = {
"id" -> obj.execId, ("url" -> ("spark://" + obj.uri)) ~
"memory" -> obj.memory, ("workers" -> obj.workers.toList.map(writeWorkerInfo)) ~
"appid" -> obj.appId, ("cores" -> obj.workers.map(_.cores).sum) ~
"appdesc" -> writeApplicationDescription(obj.appDesc) ("coresused" -> obj.workers.map(_.coresUsed).sum) ~
)) ("memory" -> obj.workers.map(_.memory).sum) ~
("memoryused" -> obj.workers.map(_.memoryUsed).sum) ~
("activeapps" -> obj.activeApps.toList.map(writeApplicationInfo)) ~
("completedapps" -> obj.completedApps.toList.map(writeApplicationInfo))
}
def writeMasterState(obj: MasterStateResponse): JSONType = JSONObject(Map( def writeWorkerState(obj: WorkerStateResponse) = {
"url" -> ("spark://" + obj.uri), ("id" -> obj.workerId) ~
"workers" -> obj.workers.toList.map(writeWorkerInfo), ("masterurl" -> obj.masterUrl) ~
"cores" -> obj.workers.map(_.cores).sum, ("masterwebuiurl" -> obj.masterWebUiUrl) ~
"coresused" -> obj.workers.map(_.coresUsed).sum, ("cores" -> obj.cores) ~
"memory" -> obj.workers.map(_.memory).sum, ("coresused" -> obj.coresUsed) ~
"memoryused" -> obj.workers.map(_.memoryUsed).sum, ("memory" -> obj.memory) ~
"activeapps" -> JSONArray(obj.activeApps.toList.map(writeApplicationInfo)), ("memoryused" -> obj.memoryUsed) ~
"completedapps" -> JSONArray(obj.completedApps.toList.map(writeApplicationInfo)) ("executors" -> obj.executors.toList.map(writeExecutorRunner)) ~
)) ("finishedexecutors" -> obj.finishedExecutors.toList.map(writeExecutorRunner))
}
def writeWorkerState(obj: WorkerStateResponse): JSONType = JSONObject(Map(
"id" -> obj.workerId,
"masterurl" -> obj.masterUrl,
"masterwebuiurl" -> obj.masterWebUiUrl,
"cores" -> obj.cores,
"coresused" -> obj.coresUsed,
"memory" -> obj.memory,
"memoryused" -> obj.memoryUsed,
"executors" -> JSONArray(obj.executors.toList.map(writeExecutorRunner)),
"finishedexecutors" -> JSONArray(obj.finishedExecutors.toList.map(writeExecutorRunner))
))
} }
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
package spark.deploy.master.ui package spark.deploy.master.ui
import scala.util.parsing.json.JSONType
import scala.xml.Node import scala.xml.Node
import akka.dispatch.Await import akka.dispatch.Await
...@@ -26,6 +25,8 @@ import akka.util.duration._ ...@@ -26,6 +25,8 @@ import akka.util.duration._
import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletRequest
import net.liftweb.json.JsonAST.JValue
import spark.deploy.DeployMessages.{MasterStateResponse, RequestMasterState} import spark.deploy.DeployMessages.{MasterStateResponse, RequestMasterState}
import spark.deploy.JsonProtocol import spark.deploy.JsonProtocol
import spark.deploy.master.ExecutorInfo import spark.deploy.master.ExecutorInfo
...@@ -36,7 +37,7 @@ private[spark] class ApplicationPage(parent: MasterWebUI) { ...@@ -36,7 +37,7 @@ private[spark] class ApplicationPage(parent: MasterWebUI) {
implicit val timeout = parent.timeout implicit val timeout = parent.timeout
/** Executor details for a particular application */ /** Executor details for a particular application */
def renderJson(request: HttpServletRequest): JSONType = { def renderJson(request: HttpServletRequest): JValue = {
val appId = request.getParameter("appId") val appId = request.getParameter("appId")
val stateFuture = (master ? RequestMasterState)(timeout).mapTo[MasterStateResponse] val stateFuture = (master ? RequestMasterState)(timeout).mapTo[MasterStateResponse]
val state = Await.result(stateFuture, 30 seconds) val state = Await.result(stateFuture, 30 seconds)
......
...@@ -19,13 +19,14 @@ package spark.deploy.master.ui ...@@ -19,13 +19,14 @@ package spark.deploy.master.ui
import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletRequest
import scala.util.parsing.json.JSONType
import scala.xml.Node import scala.xml.Node
import akka.dispatch.Await import akka.dispatch.Await
import akka.pattern.ask import akka.pattern.ask
import akka.util.duration._ import akka.util.duration._
import net.liftweb.json.JsonAST.JValue
import spark.Utils import spark.Utils
import spark.deploy.DeployWebUI import spark.deploy.DeployWebUI
import spark.deploy.DeployMessages.{MasterStateResponse, RequestMasterState} import spark.deploy.DeployMessages.{MasterStateResponse, RequestMasterState}
...@@ -37,7 +38,7 @@ private[spark] class IndexPage(parent: MasterWebUI) { ...@@ -37,7 +38,7 @@ private[spark] class IndexPage(parent: MasterWebUI) {
val master = parent.masterActorRef val master = parent.masterActorRef
implicit val timeout = parent.timeout implicit val timeout = parent.timeout
def renderJson(request: HttpServletRequest): JSONType = { def renderJson(request: HttpServletRequest): JValue = {
val stateFuture = (master ? RequestMasterState)(timeout).mapTo[MasterStateResponse] val stateFuture = (master ? RequestMasterState)(timeout).mapTo[MasterStateResponse]
val state = Await.result(stateFuture, 30 seconds) val state = Await.result(stateFuture, 30 seconds)
JsonProtocol.writeMasterState(state) JsonProtocol.writeMasterState(state)
......
...@@ -19,13 +19,14 @@ package spark.deploy.worker.ui ...@@ -19,13 +19,14 @@ package spark.deploy.worker.ui
import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletRequest
import scala.util.parsing.json.JSONType
import scala.xml.Node import scala.xml.Node
import akka.dispatch.Await import akka.dispatch.Await
import akka.pattern.ask import akka.pattern.ask
import akka.util.duration._ import akka.util.duration._
import net.liftweb.json.JsonAST.JValue
import spark.Utils import spark.Utils
import spark.deploy.JsonProtocol import spark.deploy.JsonProtocol
import spark.deploy.DeployMessages.{RequestWorkerState, WorkerStateResponse} import spark.deploy.DeployMessages.{RequestWorkerState, WorkerStateResponse}
...@@ -38,7 +39,7 @@ private[spark] class IndexPage(parent: WorkerWebUI) { ...@@ -38,7 +39,7 @@ private[spark] class IndexPage(parent: WorkerWebUI) {
val worker = parent.worker val worker = parent.worker
val timeout = parent.timeout val timeout = parent.timeout
def renderJson(request: HttpServletRequest): JSONType = { def renderJson(request: HttpServletRequest): JValue = {
val stateFuture = (workerActor ? RequestWorkerState)(timeout).mapTo[WorkerStateResponse] val stateFuture = (workerActor ? RequestWorkerState)(timeout).mapTo[WorkerStateResponse]
val workerState = Await.result(stateFuture, 30 seconds) val workerState = Await.result(stateFuture, 30 seconds)
JsonProtocol.writeWorkerState(workerState) JsonProtocol.writeWorkerState(workerState)
......
...@@ -21,9 +21,10 @@ import javax.servlet.http.{HttpServletResponse, HttpServletRequest} ...@@ -21,9 +21,10 @@ import javax.servlet.http.{HttpServletResponse, HttpServletRequest}
import scala.annotation.tailrec import scala.annotation.tailrec
import scala.util.{Try, Success, Failure} import scala.util.{Try, Success, Failure}
import scala.util.parsing.json.JSONType
import scala.xml.Node import scala.xml.Node
import net.liftweb.json.{JValue, pretty, render}
import org.eclipse.jetty.server.{Server, Request, Handler} import org.eclipse.jetty.server.{Server, Request, Handler}
import org.eclipse.jetty.server.handler.{ResourceHandler, HandlerList, ContextHandler, AbstractHandler} import org.eclipse.jetty.server.handler.{ResourceHandler, HandlerList, ContextHandler, AbstractHandler}
import org.eclipse.jetty.util.thread.QueuedThreadPool import org.eclipse.jetty.util.thread.QueuedThreadPool
...@@ -38,8 +39,8 @@ private[spark] object JettyUtils extends Logging { ...@@ -38,8 +39,8 @@ private[spark] object JettyUtils extends Logging {
type Responder[T] = HttpServletRequest => T type Responder[T] = HttpServletRequest => T
// Conversions from various types of Responder's to jetty Handlers // Conversions from various types of Responder's to jetty Handlers
implicit def jsonResponderToHandler(responder: Responder[JSONType]): Handler = implicit def jsonResponderToHandler(responder: Responder[JValue]): Handler =
createHandler(responder, "text/json", (in: JSONType) => in.toString) createHandler(responder, "text/json", (in: JValue) => pretty(render(in)))
implicit def htmlResponderToHandler(responder: Responder[Seq[Node]]): Handler = implicit def htmlResponderToHandler(responder: Responder[Seq[Node]]): Handler =
createHandler(responder, "text/html", (in: Seq[Node]) => "<!DOCTYPE html>" + in.toString) createHandler(responder, "text/html", (in: Seq[Node]) => "<!DOCTYPE html>" + in.toString)
......
...@@ -260,6 +260,11 @@ ...@@ -260,6 +260,11 @@
<version>10.4.2.0</version> <version>10.4.2.0</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>net.liftweb</groupId>
<artifactId>lift-json_2.9.2</artifactId>
<version>2.5</version>
</dependency>
<dependency> <dependency>
<groupId>com.codahale.metrics</groupId> <groupId>com.codahale.metrics</groupId>
<artifactId>metrics-core</artifactId> <artifactId>metrics-core</artifactId>
......
...@@ -182,6 +182,7 @@ object SparkBuild extends Build { ...@@ -182,6 +182,7 @@ object SparkBuild extends Build {
"com.typesafe.akka" % "akka-slf4j" % "2.0.5" excludeAll(excludeNetty), "com.typesafe.akka" % "akka-slf4j" % "2.0.5" excludeAll(excludeNetty),
"it.unimi.dsi" % "fastutil" % "6.4.4", "it.unimi.dsi" % "fastutil" % "6.4.4",
"colt" % "colt" % "1.2.0", "colt" % "colt" % "1.2.0",
"net.liftweb" % "lift-json_2.9.2" % "2.5",
"org.apache.mesos" % "mesos" % "0.12.1", "org.apache.mesos" % "mesos" % "0.12.1",
"io.netty" % "netty-all" % "4.0.0.Beta2", "io.netty" % "netty-all" % "4.0.0.Beta2",
"org.apache.derby" % "derby" % "10.4.2.0" % "test", "org.apache.derby" % "derby" % "10.4.2.0" % "test",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment